如何根据日期范围找到一个字段的不同值?弹性搜索 6.3

How do I find distinct values of one field based on date range? Elasticsearch 6.3

我有一个字段 cid,我需要找到它的不同值。 但我想要那些满足我的日期范围限制的 cid。我的意思是,我想要在给定时间范围内添加到我的 Elasticsearch 数据库中的不同 cid

我尝试了很多方法,其中大多数只是 return 所有值而不聚合。

{
    "aggs": {
        "daterange": {
            "range": {
                "field": "@timestamp",
                "ranges": [
                        {"from": "2019-05-02", "to": "2019-05-03"}
                    ]
            },
            "aggs": {
                "result": {
                    "terms": {
                        "field": "cid.keyword"
                    }
                }
            }
        }
    },
    "_source":"cid"
}

我期望 cid 的不同值,但我得到的是符合时间范围的所有值。

更新:

将我的 URL 从 /index/search?size=100 更改为 /index/search

后,Val 的回答有效

您需要这样做,即添加日期 range 作为查询以减少文档集,然后 运行 terms 仅在文档​​上聚合属于该日期范围:

{
  "size": 0,
  "query": {
    "range": {
      "@timestamp": {
        "gte": "2019-05-02",
        "lt": "2019-05-03"
      }
    }
  },
  "aggs": {
    "result": {
      "terms": {
        "field": "cid.keyword"
      }
    }
  }
}