logstash のAggregateフィルタを使って、下記のように、同じIDを目印に、fieldの項目を配列にして一行にしたいと思っています。
inputはjdbc input pluginを使い、mysqlからデータを取ってきています。
|id_field|field|
|100 |AAA |
|100 |BBB |
|100 |CCC |
|200 |DDD |
|200 |EEE |
↓
|id_field|fields |
|100 |AAA,BBB,CCC|
|200 |DDD,EEE |
しかし、以下のように一部まとまらない行があるという状態になっています。
|id_field|fields |
|100 |AAA,BBB|
|100 |CCC |
|200 |DDD,EEE|
filter{
aggregate {
task_id => "%{id_field}"
code => "
map['id_field'] = event.get('id_field')
map['fields'] ||= []
map['fields'] << event.get('field')
event.cancel()
"
push_previous_map_as_event => true
timeout => 3
}
}
task_id => "%{id_field}"で指定している限りそうなるはずだと思っているのですが。。
足りない情報などあればお教え下さい。