Logstash分割JSON数组

Logstash分割JSON数组,json,split,logstash,Json,Split,Logstash,我使用以下过滤器拆分JSON数组,以便数组中的每个数据都有一条消息: input { stdin {} } filter { split { field => "results" } } output { stdout { codec => rubydebug } } 我发送的输入是: {"results" : [{"id": "a1", "name": "hello"}, {"id": "a2", "name": "logstash"}]} 但是,输

我使用以下过滤器拆分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

如Logstash网站所述:

您应该通过应用

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

而不是
split
过滤器。

非常感谢,它可以工作。有一件事我不太明白,为什么过滤器中的源代码是“message”,而我感兴趣的json是“result”?@Christian68这是Logstash如何识别输入的主体。我很高兴它成功了,别忘了将它标记为
答案
,以帮助其他人找到它。