Разделить массив Elasti c с полями ключ + значение на ключ: значение - PullRequest
0 голосов
/ 27 мая 2020

какое-то время борюсь со странным вызовом в логсте 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"
        }
    ],

Есть идеи, что я делаю неправильно?

...