Logstash分割JSON数组
我使用以下过滤器拆分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"}]} 但是,输
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如何识别输入的主体。我很高兴它成功了,别忘了将它标记为答案
,以帮助其他人找到它。