Elasticsearch:带有子聚合的has_child查询 - 存储桶计数错误

时间:2015-08-13 01:46:25

标签: elasticsearch

我正在尝试根据孩子的比赛找到父母,并检索比赛的子项聚合。出于某种原因,儿童聚合的桶数显示的计数高于实际结果(如果它显示父母的计数 - 或者特定儿童桶中的孩子,我会很高兴。)

查询类似于以下内容(注意:我使用过滤后的查询,因为我稍后会在查询之外添加过滤器):

{ type ValueT = this.type }

}

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

问题如评论中所述。解决方案是使用查询

过滤聚合
"query" : {
    "filtered" : {
        "query" : {
            "has_child" : {
            "type" : "blog_tag",
            "query" : {
                "filtered" : {
                    "query" : {
                        "term" : {
                            "tag" : "something"
                        }
                    }
                }
            }
        }
    }
},
"aggs" : {
    "my_children" : {
        "children" : {
            "type" : "my_child_type"
        },
        "aggs" : {
            "results" : {
                "filter" : {
                    "query" : {
                        "filtered" : {
                            "query" : {
                                "term" : {
                                    "tag" : "something"
                                }
                            }
                        }
                    }
                },
                "aggs" : {
                    "field_name" : {
                        "terms" : {
                            "field" : { "blog.blog_tag.field_name" }
                       }
                    }
                }
            }
        }
    }
}