2017-02-08 58 views
0

メッセージから格納されたproc名を取得するために、Kibana 5にscritptedフィールドを追加したいとします。各SPごとのエラー数を視覚化できるようにする。 私はエラーテキストを見ることができ、フィールド "メッセージ" を持っている:kibana 5正規表現一致のスクリプトフィールド

"[2017-02-03 05:04:51,087] @ MyApp.Common.Server.Logging.ExceptionLogger [ERROR]: XmlWebServices Exception 
User: 
    Name: XXXXXXXXXXXXXXXXXXXXXXX 
    Email: [email protected] 
    User ID: 926715 (PAID) 

Web Server: PERFTESTSRV 
Exception: 
    Type: MyApp.Common.Server.DatabaseException 
    Message: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 
    Source: MyApp.Common.Server 
    Database: MyDB 
    Cmd Type: StoredProcedure 
    Cmd Text: spGetData 
    Trans:  YES 
    Trans Lvl: Unspecified" 

ガイド:https://www.elastic.co/blog/using-painless-kibana-scripted-fields

私の計画は次のように無痛スクリプトとして何かを追加することです:

def m = /(?:Cmd\sText:\s*)[a-zA-Z]{1,}/.matcher(doc['message'].value); 
if (m.matches()) { 
    return m.group(1) 
} else { 
    return "no match" 
} 

もI試しました

def tst = doc['message'].value; 
if (tst != null) 
{ 
def m = /(?:User\sID:\s*)[0-9]{1,}/.matcher(tst); 
if (m.matches()) { 
    return m.group(1) 
} 
} else { 
    return "no match" 
} 

私はdoc ['message']にどのように対処できますか。 ? 私がそうしようとするとエラーが表示されます。 "Courier Fetch:5個のシャードのうち5個が失敗しました。" doc ['message.keyword']。valueを試してみると、内部に完全なメッセージがありません。私はメッセージが内部に持つ構造をどこで知ることができ、どのように私がそれを参照できるのか理解できません。

+0

script.painless.regex.enabled:true –

+0

あなたのマッピングは 'message'のようにどのように見えますか?そしてスクリプト内にスクリプトフィールドがあれば、あなたのスクリプトフィールドには何が届いていますか?** doc ['message.keyword']。value **? – Kulasangar

+0

ここでメッセージ のマッピングを取得する方法がわからない私はKibana で見るものであるhttp://joxi.ru/5mdvBMjSkelGdA 私はDOC [「message.keyword」]を持っている。値 私はタイプの結果を以下していますエラーが発生する必要があります。結果として " - "しか表示されません。 –

答えて

1

メッセージの長さに問題があるとします。タイプ "キーワード"には長すぎます。無痛でサポートされていないタイプの "text"でなければなりません。

https://www.elastic.co/blog/using-painless-kibana-scripted-fields

無痛とLuceneの両方式がdoc_valuesに格納されたフィールド上で動作します。したがって、文字列データの場合、データ型>キーワードに格納する文字列が必要です。 Painlessに基づくスクリプトフィールドも> _sourceで直接操作することはできません。

https://www.elastic.co/guide/en/elasticsearch/reference/master/keyword.html_italic_

フィールド、電子メールアドレス、ホスト名、ステータス>コード、郵便番号やタグなどのインデックス構造化コンテンツへ。 電子メール本文や製品>説明などのフルテキストコンテンツをインデックスする必要がある場合は、テキストフィールドを使用する必要があります。