过滤的查询 - 检索每个过滤器的过滤文档数

时间:2015-08-22 15:21:46

标签: elasticsearch

当执行带有3个过滤器的过滤查询时,有没有办法知道哪个过滤器,过滤了多少文件?

我还有20个过滤器,有时只有一个过滤器有问题,过滤所有文件,我想得到指示。

这有意义吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用filters aggregation进行操作。将每个过滤器放在内部filters哈希值中,在响应中,您会看到匹配每个过滤器的doc_count

{
  "size": 0,
  "aggs": {
    "messages": {
      "filters": {
        "filters": {
          "filter1": {
            "term": {
              "field1": "sample1"
            }
          },
          "filter2": {
            "term": {
              "field2": "sample2"
            }
          }
        }
      }
    }
  }
}

然后,当您掌握了这些信息时,最好重新设计查询并从选择最少文档的过滤器开始订购过滤器,以便下一个过滤器链接尽可能少的文档。