简化的“文章”的Elasticsearch索引包含具有字段<project-id>
和bq init
的文档,以及一些其他内容。
domain_name
仅限于少数几个关键字值,例如tag
,tag
,其中source1
在每个文档中只能有一个值。 source2
是每个文档中的单个值
我想从tag
的另一个查询中返回domain_name
不包含tag=source1
的一组文档
分两个步骤进行操作:
设置为排除
domain_name
将处理结果以生成tag=source2
值的数组,每个返回文档中的一个。
然后,第二个查询将获取它关心的所有项目,然后排除不需要的项(上一个查询的域名列表)。
查询减号设置为排除
{
"query": {
"term" : { "tag" : "source2" }
}
}
在单个查询中还是使用聚合可能吗?索引和结果集不会很大,因此我对性能的担心比对便利性的担心。
奖金问题,这可以直接在Kibana中定义吗?
答案 0 :(得分:0)
对于我来说,我使用编程语言(Java)执行第一个查询并通过第一个查询获取文档的结果数组,然后将查询结果的ID存储在数组中,并使用包含第一个查询的ID的该数组执行第二个查询询问 弹性不支持嵌套查询
答案 1 :(得分:0)
为避免两次调用,请使用嵌套查询或(has_child和has_parent)查询。 请参阅Elasticsearch Doc