5

我正在使用弹性搜索日期直方图按时间计数对响应进行分组。日期直方图方面对此非常有用,但如果间隔没有任何响应,则它不会显示在 json 中。我认为解决这个问题的最佳方法是使用 javascript 来填补图表库中的空白。(理想情况下在 highcharts 但 d3 或其他东西是可能的)。几个月似乎很容易做到,但当我需要每周和每天都做时,它会变得更加复杂。基本上我的问题是:

{ date: April: 5, count: 5 }, { date: June, count: 10 } 

需要更像

{ date: April: 5, count: 5 }, {date: May, count: null }, { date: June, count: 10 }
4

2 回答 2

1

min_doc_count=0只在非空桶之间创建间隔。如果您想在存储桶之外绘制空间隔(在数据开始之前或之后几个月),请添加extended_boundsdocs)。

elasticsearch_dsl, 允许空桶到两年前,这看起来像

    A(
        "date_histogram",
        field="publishedAt",
        calendar_interval="month",
        format="MMM yyyy",
        min_doc_count=0,
        extended_bounds={"min": f"{date:%b %Y}||-2y"},
    ),
于 2021-09-26T03:47:14.627 回答
0

在搜索和阅读文档后,我遇到了同样的问题,我发现extended_bounds 可以解决我的问题:

{
  "aggs": {
    "total": {
      "date_histogram": {
        "extended_bounds": {
          "max": "2022-11-01",
          "min": "2015-09-04"
        },
        "field": "eventDate",
        "calendar_interval": "1d",
        "min_doc_count": 0
      }
    }
  }
}
于 2022-01-30T11:21:16.527 回答