2017-03-29 102 views
0

我有一個已經被解析的Logstash列表數據,看起來像:循環和迭代中logstash

"Attribute": [ 

"<Book><Name>N1</Name><Value>Clement</Value></Book>", 

"<Book><Name>N2</Name><Value>Bundle Name</Value></Book>" 

], 

我要循環該列表來生成輸出中的以下數據:

"book1":{ 

"key": "N1", 

"value":"Clement" 

}, 

"book2":{ 

"key": "N2", 

"value":"Bundle Name" 
} 

有沒有可能這樣做? 感謝您的幫助。對此,我真的非常感激。

回答

0

這可能可以用the split {} filter完成。

filter { 
    split { 
    field => "Attribute" 
    target => "book_bundle" 
    add_tags => [ "split_out" ] 
    } 
} 

將帶你的源事件,將其克隆到N個新事件,其中N是Attribute數組成員的數量。陣列成員將被放入book_bundle字段,並添加標記split_out,以便您可以告訴它已經在過濾器堆棧後面拆分。

+0

「數組成員將被放入book_bundle字段,」是否有計時器採取此操作?因爲當我嘗試這個過濾器時,我只找到了數組的第一個成員。然後當我停止logstash過程時,我發現了數組元素的其餘部分! –

+0

@ M.MELKI您可以嘗試在此過濾器上設置'periodic_flush =>'。 – sysadmin1138

+0

它在我使periodic_flush =>「true」時有效..非常感謝! –