2016-11-02 13 views
0

は、私は、次の形式のファイルを持っている:LogstashのKVフィルタ

10302\t<document>.....</document> 
12303\t<document>.....</document> 
10054\t<document>.....</document> 
10034\t<document>.....</document> 

あなたはタブ文字で区切られた2つの値がある見ることができるように。私は

  • インデックスID
  • 抽出物(および、インデックス)は、第2のトークン(XMLドキュメント)からいくつかの情報である第1のトークン(例えば10302、12303 ...)を必要とします。言い換えれば、2番目のトークンはxmlフィルタでいくつかの情報を抽出するために使用されます。

kvフィルタを使用して2つの値を分けることは可能ですか?理想的には私はこのような文書で、各ラインのため、終了する必要があります:

id:10302  
msg:<document>....</document> 

私はGROKフィルタを使用することができますが、フィールドの検出は非常に簡単で、で行うことができるように私は、任意の正規表現を避けたいのですがシンプルなキー・バリュー・ロジックしかし、平易なkv検出を使用して、私は次のように終わります:

"10302": <document>.....</document> 
"12303": <document>.....</document> 
"10054": <document>.....</document> 
"10034": <document>.....</document> 

これは私が必要としないです。

+0

あなたのKVフィルタの設定を追加してもらえますか? – baudsp

+0

「キーを取得し、そのキーを持つIDを値として作成し、属性を設定し、その値を取得し、その値を持つ属性メッセージを作成する」という方法を知らないため、私はそれを持っていません。 – Andrea

+1

id(10302、10303、10304 ...)の可能なキーがないので、あなたがやりたい仕事にkvを使うことはできないと思います。しかしgrokは完全に '%{INT:ID} \ t%{GREEDYDATA:msg}'で動作するでしょう。 – baudsp

答えて

0

id(10302、10303、10304 ...)の可能なキーがないので、私が知る限り、あなたがやりたい仕事にkvを使うことはできません。 idの前には何もないので、キーはありません。

このGROK構成は各ID +ドキュメントを前提として、仕事とは、同じ行にある:

grok { 
    match => { "message" => "^%{INT:ID}\t%{GREEDYDATA:msg}"} 
} 
関連する問題