2017-01-01 179 views
0

我有一個數組,其中包含具有鍵和值的對象。我想檢查「密鑰」字段是否等於某事。Logstash - 在數組中查找對象的字段包含的內容

這工作 -

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

但我硬編碼了[0]索引,相關條目可能不是數組中的第一個。

我該怎麼寫呢?

+0

這是很清楚這裏的」相關條目可能不是數組中的第一「?即使認爲它不是數組中的第一項,它會反正搜索整個數組? – Kulasangar

+0

@Darth_Vader - 它會搜索整個數組,但是如果arrray包含原始字符串,那就沒問題,問題是我需要訪問對象內部的「key」字段(每個元素的數組是一個對象),那就是我不知道沒有硬編碼[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   
       " 
     } 
     } 
相關問題