Логсташ разделенный массив JSON - PullRequest
0 голосов
/ 18 октября 2019

Я использую следующий фильтр для разделения массива JSON, чтобы у меня было одно сообщение на данные в массиве:

input {
  stdin {}
}
filter {
  split {
    field => "results"
  }
}
output {
    stdout { codec => rubydebug }
}

Отправляемый ввод:

{"results" : [{"id": "a1", "name": "hello"}, {"id": "a2", "name": "logstash"}]}

Тем не менее, вывод представляет собой одно сообщение со следующей ошибкой:

[main] Only String and Array types are splittable. field:results is of type = NilClass

/logstash-7.4.0/vendor/bundle/jruby/2.5.0/gems/awesome_print-1.7.0/lib/awesome_print/formatters/base_formatter.rb:31: warning: constant ::Fixnum is deprecated
{
       "message" => "{\"results\" : [{\"id\": \"a1\", \"name\": \"hello\"}, {\"id\": \"a2\", \"name\": \"logstash\"}]}",
      "@version" => "1",
    "@timestamp" => 2019-10-18T14:07:57.285Z,
          "host" => "C02Z40E8LVDR",
          "tags" => [
        [0] "_split_type_failure"
    ]
}

Есть подсказка? Большое спасибо. Christian

1 Ответ

1 голос
/ 21 октября 2019

Как указано на веб-сайте Logstash: https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html

Вы должны использовать плагин фильтра JSON, применив

filter {
  json {
    source => "message"
  }
}

вместо фильтра split.

...