2017-01-01 8 views
0

私はキーと値を持つオブジェクトを含む配列を持っています。私は "キー"フィールドが何かに等しいかどうかチェックしたいと思います。Logstash - オブジェクトのフィールドが入っている配列を検索

これは動作します -

if "MyTest" in [doc][customInput][tags][0][key]    
mutate { add_field => {"[doc][test]" => "5555"}}    

しかし、私はハード[0]インデックスをコード化され、関連するエントリは、配列の最初ではないかもしれません。

どうすればいいですか?

+0

それはここでかなり不明だ「関連のエントリが配列の最初ではないかもしれません"?配列内の最初の項目ではないとは思えますが、配列全体を検索します。 – Kulasangar

+0

@Darth_Vader - 配列全体を検索しますが、arrrayにプリミティブ文字列が含まれていればOKですが、問題はオブジェクト内の「キー」フィールドにアクセスする必要があることです(各要素の配列はオブジェクトです)。私は[0]インデックスをハードコーディングせずに行うことを知らないのですか? – BornToCode

答えて

0

私は(それなしでそれを行うにはどのような方法を見つけることができませんでした)、その目的のためにルビーのフィルタを使用して終了:

filter { 
    ruby { 
     code => " 
       myArray = event['doc']['customInput']['tags'] 
       if myArray && myArray.detect{|t| t['key'] == "MyTest"}  
        event['doc']['test'] = tags_array.detect{|t| t['key'] == 'MyTest'}['value'] 
       end   
       " 
     } 
     } 
関連する問題