elasticsearch 是否基于字段值合并文档?
我在一个索引中有多个文档,每个文档都有以下字段:
elasticsearch 是否基于字段值合并文档?,
elasticsearch,kibana,kibana-5,
elasticsearch,Kibana,Kibana 5,我在一个索引中有多个文档,每个文档都有以下字段: id serviceName Type 现在,愚蠢的是,id不是唯一的,我想改变这一点。我想使用Kibana/Elasticsearch查询数据,这样我就有了id唯一性,我想要的行为是,如果我有以下文档: id serviceName Type 1 A T1 1 B T2 1 D T2 我使用一个查询来得到这个结果 1 A,B
id serviceName Type
现在,愚蠢的是,id
不是唯一的,我想改变这一点。我想使用Kibana/Elasticsearch查询数据,这样我就有了id
唯一性,我想要的行为是,如果我有以下文档:
id serviceName Type
1 A T1
1 B T2
1 D T2
我使用一个查询来得到这个结果
1 A,B,C T1,T2,T3
有什么办法吗?你不能用Elasticsearch/Kibana来实现这一点,你必须编写一些代码。您可以使用来迭代索引中的所有文档,然后使用将它们索引到新索引中。我认为您的upsert请求将如下所示:
POST test/type1/1/_update
{
"script" : {
"inline": "ctx._source.serviceName.add(params.serviceName); ctx._source.Type.add(params.Type)",
"lang": "painless",
"params" : {
"serviceName" : "A",
"Type": "T1"
}
},
"upsert" : {
"serviceName": ["A"],
"Type": ["T1"]
}
}
这意味着,如果id 1还不存在,请将其与文档的“upsert”值一起添加,否则执行脚本(将serviceName和Type值附加到现有文档)
这将非常简单,只需使用很少的代码,请查看