使用选定的方面获取汇总结果

时间:2019-01-18 12:00:18

标签: elasticsearch

不确定是否可行,但是我遇到了当前问题:

在页面上但未选择任何构面的情况下,我在构面上进行了一些汇总的查询。

例如:在“女士鞋子”页面上,我运行一个查询,其中“ gender = ladies”和类别“ shoes”作为过滤器,这给了我所有想要的结果。另外,“品牌”的汇总也将我所有的品牌归还给我。但是,由于不符合“女士鞋”标准,因此其中也包含计数为0的品牌。但是由于没有选择任何构面,因此我可以将它们隐藏起来,这样用户就不会看到它们。

到目前为止,很好。

现在,当我查询“耐克女鞋”(brand = nike作为过滤器)时,我得到了相同的汇总列表,但现在除耐克外,所有品牌的计数都为0。现在,很难隐藏它们,因为我们希望提供对多个(可用)品牌进行过滤的可能性。

最好的方法是什么,并尽可能减少查询?

1 个答案:

答案 0 :(得分:1)

在您的示例中谈论多选择构面时-Elasticsearch中有一个非常方便的功能-post_filter

  

post_filter应用于搜索匹配项的末尾   已经计算出聚合后的搜索请求。

您需要做的就是将您的Nike品牌过滤器移动到查询的post_filter,如下所示:

{
  "query": {
      ...
  },
  "aggs": {
      ...
  },
  "post_filter": { 
    "term": { "brand": "Nike" }
  }
}

这将允许您计算所有品牌的汇总,并且仅在之后才能过滤出所选品牌。