弹性搜索分面查询返回错误计数

时间:2012-06-26 08:34:45

标签: elasticsearch

我需要在弹性搜索中进行聚合/分面查询的帮助。我已经使用分面查询对结果进行分组,但我没有得到正确计数的分组结果。

请建议如何从弹性搜索中获取分组结果。

{ 
   "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的分组结果。

3 个答案:

答案 0 :(得分:0)

Elasticsearch faceting查询在准确性方面效果很好,至少我还没有看到任何问题 只有几个问题:

  1. 这个字符串或数字是什么字段,举个例子?
  2. 您是否应用了任何自定义映射,或者您使用了默认的“标准”分析器
  3. 请说明"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提供了一个很好的描述以及一些关于如何正确使用聚合功能的例子。