2016-03-29 87 views
0

我正在查找可以修改數組字段的logstash過濾器。logstash過濾器修改數組字段

例如,我想一個修改,可以把這個JSON文件

{ 
    arrayField: [ 
    { 
     subfield: { 
     subsubfield: "value1" 
     } 
    }, 
    { 
     subfield: { 
     subsubfield: "value2" 
     } 
    } 
    ] 
} 

進入這個JSON文件

{ 
    arrayField: [ 
    { 
     subfield: "value1" 
    }, 
    { 
     subfield: "value2" 
    } 
    ] 
} 

我曾嘗試以下輸入

input { 
    mutate { 
    replace => ["[arrayField][subfield]", "%{[arrayField][subField][subsubField]}"] 
    } 
} 

但輸入只是重寫數組字段,而不是在數組的每個元素上進行操作。你如何設置一個修飾符來操作數組的每個元素?

+1

要一般地在logstash中的字段之間循環,您需要放入ruby {}過濾器。其他SO帖子中有這樣的例子。 –

+0

謝謝,紅寶石過濾器效果很好。 –

回答

0

感謝Alain Collins指出紅寶石過濾器。下面的輸入做了訣竅。

input { 
    ruby { 
    code => " 
     event['arrayField'].each{|subdoc| subdoc['subfield'] = subdoc['subfield']['subsubfield']} 
    " 
    } 
}