【发布时间】:2017-09-26 10:44:22
【问题描述】:
我正在 elasticsearch 中执行查询。我需要在索引中表示每个月的属性“end_date_ut”(类型为日期,格式为 dateOptionalTime)的命中数。 为此,我使用了 date_histogram 聚合。
我的查询如下:
GET inc/_search
{
"size": 0,
"aggs": {
"appli": {
"date_histogram": {
"field": "end_date_ut",
"interval": "month"
}
}
}
}
这是结果的一部分:
"hits": {
"total": 517478,
"max_score": 0,
"hits": []
},
"aggregations": {
"appli": {
"buckets": [
{
"key_as_string": "2009-08-01T00:00:00.000Z",
"key": 1249084800000,
"doc_count": 0
},
{
"key_as_string": "2009-09-01T00:00:00.000Z",
"key": 1251763200000,
"doc_count": 1
},
{
"key_as_string": "2009-10-01T00:00:00.000Z",
"key": 1254355200000,
"doc_count": 2362
},
{
"key_as_string": "2009-11-01T00:00:00.000Z",
"key": 1257033600000,
"doc_count": 5336
},
{
"key_as_string": "2009-12-01T00:00:00.000Z",
"key": 1259625600000,
"doc_count": 7536
},
{
"key_as_string": "2010-01-01T00:00:00.000Z",
"key": 1262304000000,
"doc_count": 8864
}
问题是我有太多的桶(结果)。当我使用“术语聚合”时,我没有任何问题,因为我可以设置大小,但是使用“date_histogram 聚合”我找不到限制查询结果的方法。
【问题讨论】:
-
您需要添加
range查询以限制运行date_aggregation的时间间隔。 -
这是一个很好的解决方案,但我不想限制时间间隔。还有其他方法可以只获得前 20 个结果吗?
-
您可以使用
min_doc_count仅包含具有数据的存储桶,即包含 0 个文档的存储桶不会在响应中返回。 -
确实,大大减少了结果的数量。我还有 74 个桶。那么有没有办法对这种类型的聚合强制一个大小?
-
取决于您的标准...您需要过滤掉哪些桶?
标签: elasticsearch