我有一个日志文件,其中包含一系列对象,如下所示:
[
{ "cate1": "data1a", "cate2": "data2a" },
{ "cate1": "data1b", "cate2": "data2b" },
{ "cate1": "data1c", "cate2": "data2c" }
]
我需要数组中的每个对象都是Elasticsearch中的一个单独的条目,并且每个对象都是#c;"成为一个领域。我当前的logstash.conf文件是:
input {
tcp {
port => 5000
}
}
## Add your filters / logstash plugins configuration here
filter {
json {
source => "message"
target => "event"
}
mutate {
gsub => ["message","\]",""]
gsub => ["message","\[",""]
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
}
}
但它用" _jsonparsefailure"标记每一行。除了第一个条目,它也解析方括号。我将如何配置Logstash以正确执行此操作?
答案 0 :(得分:1)
您应该考虑在输入中使用json
codec,而不是使用json
过滤器。它似乎完全符合你的要求:
此编解码器可用于解码(通过输入)和编码(通过输出) 完整的JSON消息。如果要发送的数据是其根目录下的JSON数组 将创建多个事件(每个元素一个)。
它看起来像这样:
input {
tcp {
port => 5000
codec => json{ }
}
}