2017-03-29 67 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”时有效..非常感谢! –