elasticsearch:聚合min\u doc\u count for weeks不起作用

u7up0aaq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(404)

我有以下几点建议 interval=week 以及 min_doc_count=0 ```
{
"aggs": {
"scores_by_date": {
"date_histogram": {
"field": "date",
"format": "yyyy-MM-dd",
"interval": "week",
"min_doc_count": 0
}
}
}

和日期过滤器 `Jan-01-2015` 至 `Feb-23-2015` ```
{
  "range": {
    "document.date": {
      "from": "2015-01-01",
      "to": "2015-02-23"
    }
  }
}

我希望elasticsearch即使是空的,也能填满七个星期的时间,并返回一个桶,但最终只有一个项目在里面

{
  "aggregations": {
    "scores_by_date": {
      "buckets": [
        {
          "key_as_string": "2015-01-05",
          "key": 1420416000000,
          "doc_count": 5
        }
      ]
    }
  }
}
``` `Elasticsearch version: 1.4.0` 我的聚合有什么问题,或者如何使用elasticsearch来填充缺失的周数?
tnkciper

tnkciper1#

您可以尝试指定扩展边界(官方文档页面上有文档讨论了直方图聚合的这一特性)。这些文件中最相关的要点是:
使用extended\u bounds设置,您现在可以“强制”直方图聚合开始在特定的最小值上构建bucket,并继续在最大值上构建bucket(即使不再有文档)。只有当mindoc\u计数为0时,使用扩展的\u界限才有意义(如果mindoc\u计数大于0,则永远不会返回空存储桶)。
因此,您的聚合可能必须如下所示,以强制es返回该范围内的空桶:

{
  "aggs": {
    "scores_by_date": {
      "date_histogram": {
      "field": "date",
      "format": "yyyy-MM-dd",
      "interval": "week",
      "min_doc_count": 0,
      "extended_bounds" : {
        "min" : "2015-01-01",
        "max" : "2015-02-23"
      }
    }
  }
}

相关问题