Я пытаюсь сгладить один файл JSON, сохраненный в Elastic Search, с помощью Logstash.Поток данных выглядит следующим образом:
input {"запрос эластичного поиска для полей [files] [md5]"}
filter {"мой пользовательский код рубина для выравнивания [files] [md5] "}
output {" экспорт сплющенных файлов в csv "}
Мой ввод:
"files": [{ "SHA256": "1213447D713ECA24484983E754474D9D2F4A283D77DDBD9C8084CD7AA0574ACF", "MD5": "7D332F11DD7389C8121AA523F07CFEEC", "SHA1": "6026B28C6049115272138AD357A5AF67B99354A5" }, { "SHA256": "1213447D713ECA24484983E754474D9D2F4A283D77DDBD9C8084CD7AA0574ACF", "MD5": "7D332F11DD7389C8121AA523F07CFEEC", "SHA1": "6026B28C6049115272138AD357A5AF67B99354A5" }, { "SHA256": "1212447D713ECA24484983E754474D9D2F4A283D77DDBD9C8084CD7AA0574ACF", "MD5": "7D332F11DD7389C8121AA523F07CFEEC", "SHA1": "6026B28C6049115272138AD357A5AF67B99354A5" } ]
Код фильтрации:
ruby {
code => '
a = event.get("files")
a.each_index { |i|
event.set("files-#{i}-total", a[i]["MD5"])
}
'
}
Мой вывод:
"files-1-total":"7D332F11DD7389C8121AA523F07CFEEC",
"files-2-total":"7D332F11DD7389C8121AA523F07CFEEC",
"files-3-total":"7D332F11DD7389C8121AA523F07CFEEC"
Что я хочу сделать, это:
"files":["7D332F11DD7389C8121AA523F07CFEEC","7D332F11DD7389C8121AA523F07CFEEC","7D332F11DD7389C8121AA523F07CFEEC"]
Как я могу изменить код, чтобы все MD5 были в одном массиве?Спасибо за помощь.