ElasticSearch:使用过滤器查询从所有结果中获取方面

ElasticSearch: getting facets from all results with filter query

不知道这个问题的标题是否够清楚。

我在 ElasticSearch 的左窗格中使用语言过滤器进行文本搜索。当从搜索结果(来自查询)的左窗格中选择特定语言过滤器时,我仍然想从查询的所有搜索结果中获取语言方面。我知道这在 Solr 中是可能的,但我不确定这在 ElasticSearch 中是否可行。

是的,您可以使用 post_filter 而不是普通过滤器来实现。 post_filter 所做的是在 对完整数据集计算聚合后 过滤文档。

所以不是这个:

{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "some_field": "some_value"
        }
      }
    }
  },
  "aggs": {
    "languages": {
      "terms": {
        "field": "language"
      }
    }
  }
}

这样做:

{
  "post_filter": {
    "term": {
      "some_field": "some_value"
    }
  },
  "aggs": {
    "languages": {
      "terms": {
        "field": "language"
      }
    }
  }
}