如何在Elasticsearch中的分组字段上应用聚合?

时间:2018-08-29 10:45:49

标签: elasticsearch search solr search-engine

在我的电子商务商店中,我只希望在最终结果中包括每个组中的第一个项目(按item_id分组)。同时,我也不想丢失聚合(属性旁边的小数字表示已找到具有该属性的项目)。

这是一个小例子:

假设我搜索商品,但只显示25个。这是我当前得到的颜色聚合的结果:


  • 黑色(65)
  • 绿色(32)
  • 白色(13)

我希望它是


  • 黑色(14)
  • 绿色(6)
  • 白色(5)

数字应等于用户在页面上实际看到的总数。

如何通过Elasticsearch实现这一目标?我已经尝试了分组(热门)和字段折叠,但两者似乎都不适合我的用例。 Solr几乎在默认情况下会利用其分组功能来做到这一点。

1 个答案:

答案 0 :(得分:0)

应该很容易。当您要求聚合时,您只需将请求发送到Name: hello-world Version: 1 Release: 2 Summary: Most simple RPM package License: FIXME Requires: hello-world = 1-1 Provides: hello-world = %{version}-%{release} 端点即可。示例:

_search

在上面的示例中,您将获得所有文档的汇总。

如果您想汇总特定文档,只需在请求正文中添加特定的POST /exams/_search { "aggs" : { "avg_grade" : { "avg" : { "field" : "grade" } } } } ,例如:

query

,您也可以发送POST /exams/_search { "query": { "bool" : { "must" : { "query_string" : { "query" : "some query string here" } }, "filter" : { "term" : { "user" : "kimchy" } } } }, "aggs" : { "avg_grade" : { "avg" : { "field" : "grade" } } } } size参数。