我需要在弹性搜索中进行聚合/分面查询的帮助。我已经使用分面查询对结果进行分组,但我没有得到正确计数的分组结果。
请建议如何从弹性搜索中获取分组结果。
{
"query" : {
"query_string" : {"query" : "pared_cat_id:1"} } ,
"facets" : {
"subcategory" : {
"terms" : {
"field": "sub_cat_id",
"size" : 50,
"order" : "term",
"all_terms" : true
}
}
},
"from" : 0,
"size": 50
}
尝试获取传递的父类别ID的子类别ID的分组结果。
答案 0 :(得分:0)
Elasticsearch faceting查询在准确性方面效果很好,至少我还没有看到任何问题 只有几个问题:
请说明"aa" should have count 100 but its 50
之类的不准确之处,还是有其他不准确之处?
答案 1 :(得分:0)
“query_string”:{“query”:“pared_cat_id:1”}},
这适用于整体数据,而不是平面数。
为此,您需要使用构面查询,您可以在其中指定在主查询字符串中指定的相同内容。
因此,现在向你展示的方面计数是基于结果而不应用“query_string”:{“query”:“pared_cat_id:1”}},即。对整个数据。在应用“query_string”后,你想要facet计数:{“query”:“pared_cat_id:1”}},在facet查询中提供它。
答案 2 :(得分:0)
如果分片数> 1,则Elasticsearch facets查询返回错误计数,因此现在不推荐使用Facets,将来的版本中将删除它。我们鼓励您转而使用聚合。
我建议你看看this博客文章,其中Alex Brasetvik提供了一个很好的描述以及一些关于如何正确使用聚合功能的例子。