我有以下json文件,每行都是不同的json:
{"s":"some address","c":"some city"}
{"s":"some address1","c":"some city1"}
{"s":"some address2","c":"some city2"}
我的工作如下:
input {
file {
start_position => "beginning"
path => "/sources/someFile.txt"
}
}
filter {
json {
source => "a"
target => "addresses[0].street"
}
mutate {
remove_field => ["message", "@timestamp", "host", "path", "@version"]
}
}
output {
elasticsearch {
hosts => "http://elasticsearch:9200"
index => "store"
}
}
我想按以下方式写入索引(每个地址作为数组中的forst元素转到不同的doc):
{
"addresses": [{"street" : "some address", "city" : "some city"}]
}
{
"addresses": [{"street" : "some address2", "city" : "some city1"}]
}
{
"addresses": [{"street" : "some address3", "city" : "some city2"}]
}
附加作业不起作用。没有错误,什么也不做。
谢谢
1条答案
按热度按时间g6baxovj1#
不能在json过滤器的目标选项中使用该字段引用。在过去几年中的任何版本的logstash中,我都希望这会导致一个jsonparsefailure标记和错误
如果将引用更改为[addresses][0],则它将正常运行,但该引用将被解释为“addresses”散列中的“0”项,而不是addresses数组中的第一个项。
传入的json具有错误的字段名,因此必须重命名这些字段。我认为在ruby过滤器中实现它是最简单的
产生
原始的json放在[@metadata]字段中,这样就可以使用,但不会被输出索引。