我有一个内部有一些孩子的文件,例如:
parent : {
"id" : 1,
"name" : "test",
"children" : [
{ "idchild" : 1, "name" : "c1"},
{...}
]
}
我想将这些孩子添加到已存在的父母身上。
我有一个logstash文件来读取所有父母。它在elasticsearch中编写文档并创建一个空数组:
input {
jdbc {
jdbc_connection_string => "jdbc:postgresql://localhost:5432/test"
...
}
}
filter { ruby { code => "event.set('children',[]);" } }
output {
elasticsearch {
index => "test"
user => "elastic"
password => "elastic"
document_type => "parent"
document_id => "%{id}"
hosts => "localhost:9200"
}
}
工作正常,文件符合预期。
在第二步中,我阅读了孩子,按父母ID匹配文件,并与孩子一起更新......
filter {
mutate {
add_field => {
"[children][child][idchild]" => "%{id}"
"[children][child][name]" => "%{name}"
}
}
}
但阵列儿童成为财产和对象"孩子"每次更新而不是新插入。
我怎样才能让新生儿入住儿童?有一种方法可以将idchild声明为子文档的id吗?