2017-09-10 4 views
0

私は、logstashを通じてElasticSearchでドキュメントのインデックスを作成しようとしています。LogstashのKVフィルタの問題

GET firstname=john&lastname=smith 400 

私の目標は、私がこれまで

filter { 
    grok{ 
    match => {"message" => "%{WORD:HttpMethod} %{GREEDYDATA:KVText} %{NUMBER:time:int}"} 
} 
kv { 
    source => "KVText" 
    value_split => "&" 
    remove_field => [ "KVText" ] 
} 
を以下のなかった、以下の

HTTPMethod: GET 
    firstname : john 
    lastname: smith 
    query_time : 400 

ようになりますインデックスを作成することです、次のように私はインデックスにしようとしているファイルの例です。

ただし、logstash confファイルを実行すると、次のようなメッセージが表示されます。

 "query_time": 400, 
     "message": "GET firstname=john&lastname=smith 400\r", 
     "HttpMethod": "GET", 
     "firstname=john": "lastname=smith" 

インデックスを離散値としてkey1 = value1形式として取得していません。例えばfirstname = john lastname = smith

また、ログファイルを変更すると、logstashプロセスはリアルタイムでインデックス付けの変更を選択しません。私はファイルの名前を変更し、logstashを再起動する必要があります。私はそれが私のlogstash.confのsince_dbパスと関係があることを理解しています。

すべてのポインタは本当に感謝しています。

おかげ ニック

答えて

1

あなたはKVフィルタに間違った方法を設定しています。

paramは、field_split configが文字列からペアを分割するためにどの文字を使用するかを指示している間に、1つのキーと値のペアを分割するために使用するcharをフィルタに伝えます。試してみてください:

kv { 
    source => "KVText" 
    value_split => "=" 
    field_split => "&" 
    remove_field => [ "KVText" ] 
} 
+0

遅延応答が非常に残念です。私たちは数週間前に赤ちゃんを納入しました。おむつ交換の忙しさだった:)。 あなたの解決策は正しいです。 Keyの値のペアを正しく索引付けすることができました。しかし、レコードのインデックスを作成しようとすると、常に最後のレコードがログアウトされます。理由は分かりません。例えば、 firstname = john&lastname = smith firstname = mack&lastname = roger 3番目のレコードを追加すると、3番目のレコードが追加されますが、3番目のレコードは追加されますが、3番目のレコードは削除されます。何か案は? – Nick