首页 > 解决方案 > Elasticsearch 查询(控制台) - 基于聚合计数的后过滤器

问题描述

我有一个在 Elasticsearch 中运行的聚合查询。结果看起来不错,但是,我想通过仅返回计数大于 100 的结果来添加后过滤器。这是查询:

GET /_search
{
  "size": 0,
   "query" :
      {
          "query_string":
          {
            "fields" : ["error_message"],
            "query" : "login AND failed"
          }
      },
  "aggs":
  {
    "group_by_id":
    {
      "terms":
      {
        "field": "Id",
        "size": 1000 
      },
      "aggs":
      {
        "group_by_date":
        {
          "date_range":
          {
            "field": "timestamp",
            "ranges":
            [
              {
                "from": "now-6h",
                "to": "now"
              }
            ]
          }
        }
      }
    }
  }
}

结果如下所示:

       {
          "key": "12",
          "doc_count": 89388,
          "group_by_date": {
            "buckets": [
              {
                "key": "2018-09-20T12:48:04.200-2018-09-20T18:48:04.200",
                "from": 1537447684200,
                "from_as_string": "2018-09-20T12:48:04.200",
                "to": 1537469284200,
                "to_as_string": "2018-09-20T18:48:04.200",
                "doc_count": 50
              }
            ]
          }
        }

我只想返回第二个 doc_count 大于 100 的结果。所以这个返回的例子不会显示。

标签: elasticsearch

解决方案


推荐阅读