【发布时间】:2015-08-15 04:24:55
【问题描述】:
我正在尝试根据子项中的匹配项来查找父项,并检索匹配项的子项聚合。出于某种原因,儿童聚合的存储桶计数显示的计数高于实际结果(如果它显示特定儿童存储桶中父母或孩子的计数,我会很高兴)。
查询类似于以下(注意:我使用过滤后的查询,因为我稍后会在查询之外添加过滤器):
{
"query" : {
"filtered" : {
"query" : {
"has_child" : {
"type" : "blog_tag",
"query" : {
"filtered" : {
"query" : {
"term" : {
"tag" : "something"
}
}
}
}
}
}
},
"aggs" : {
"my_children" : {
"children" : {
"type" : "my_child_type"
},
"aggs" : {
"field_name" : {
"terms" : {
"field" : { "blog.blog_tag.field_name" }
}
}
}
}
}
}
这样做的正确方法是什么?
【问题讨论】:
-
您能否提供该查询的结果并说明错误的原因?
-
@AndreiStefan 我认为问题在于我希望子聚合的范围(在'blog_tag'上)仅限于那些与查询匹配的子聚合(内部命中)。换句话说,参考这个例子,我想要'blog.blog_tag'的'field_name'的桶,它的'tag'与查询('something')匹配。就目前而言,范围包括任何具有“标签”(has_child 查询词)的“博客”和“博客标签”,而不仅仅是与查询匹配的“博客标签”。
-
@AndreiStefan 我看到有一个聚合过滤器,如果我的查询是一个过滤器,则可以使用它 - 但看不到任何通过查询缩小聚合范围的东西。
标签: elasticsearch