为elasticsearch日期直方图绘制一个空间隔

Plotting an empty interval for elasticsearch date histogram

本文关键字:一个 空间 elasticsearch 日期 直方图 绘制      更新时间:2023-09-26

我使用elasticsearch日期直方图按计数对响应进行分组。日期直方图方面工作得很好,但如果一个间隔没有任何响应落在其中,它不会显示在json中。我认为解决这个问题的最佳方法是使用javascript来填补图表库中的空白。(理想情况下是在高图表中,但d3或其他东西是可能的)。按月计算似乎很容易,但当我需要按周或按天计算时,情况就变得复杂了。基本上我的问题是:

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

需要更像

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

min_doc_count=0仅在非空桶之间创建间隔。如果您想绘制桶外的空间隔(在数据开始之前或之后几个月),那么添加extended_bounds (docs)。

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"},
    ),

我有同样的问题一段时间后搜索和阅读文档,我发现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
      }
    }
  }
}