какое-то время борюсь со странным вызовом в логсте sh. Я пытаюсь преобразовать этот JSON вход
{
"request": {
"time": "2020-04-30T07:32:13.997Z",
"size": "0",
"headers": [
{
"key": "Correlation-Id",
"value": "124f4cdf-6cd7-44ae-a8dc-2ecf2b187f42"
},
{
"key": "host",
"value": "api.local.host"
}
],
"httpMethod": "GET",
"httpSchema": "https" } }
в это:
{
"request": {
"time": "2020-04-30T07:32:13.997Z",
"size": "0",
"headers": {
"Correlation-Id": "124f4cdf-6cd7-44ae-a8dc-2ecf2b187f42",
"host": "api.local.host"
},
"httpMethod": "GET",
"httpSchema": "https"
}
}
Я попытался вдохновиться Splitting Array и другими, но используя следующий фильтр:
filter {
json {
source => "message"
remove_field => ["message"]
}
ruby {
#code => "event.get('[request][headers]').each {|hash| event.set(hash['key'], hash['value']) }"
code => "event.get('[request][headers]').each {|hash| event.set('[request][headers][' + hash['key'] + ']', hash['value']) }"
}
}
Я получаю следующее:
"request" => {
"headers" => [
[0] {
"value" => "124f4cdf-6cd7-44ae-a8dc-2ecf2b187f42",
"key" => "Correlation-Id"
},
[1] {
"value" => "api.local.host",
"key" => "host"
}
],
Есть идеи, что я делаю неправильно?