【问题标题】:Elastic search date_histogram extended_boundsElasticsearch 日期直方图扩展范围
【发布时间】:2017-01-12 08:56:52
【问题描述】:

我想获取特定时间段内的date_histogram,如何限制日期时间段?我应该使用 extended_bounds 参数吗?例如:我想查询'2016-08-01'和'2016-08-31'之间的date_histogram,时间间隔是天。我用这个表达式查询:

{
  "aggs": {
    "cf_loan": {
      "date_histogram": {
        "field": "createDate",
        "interval": "day",
        "format": "yyyy-MM-dd",
        "min_doc_count": 0,
        "extended_bounds": {
          "min": "2016-08-01",
          "max": "2016-08-31"
        }
      }
    }
  }
}

但我得到的 date_histogram 不在范围内。

【问题讨论】:

    标签: elasticsearch date-histogram


    【解决方案1】:

    您快到了,您需要添加一个range 查询,以便仅选择createDate 字段在所需范围内的文档。

    {
      "query": {
        "range": {                           <---- add this range query
          "createDate": {
            "gte": "2016-08-01T00:00:00.000Z",
            "lt": "2016-09-01T00:00:00.000Z"
          }
        }
      },
      "aggs": {
        "cf_loan": {
          "date_histogram": {
            "field": "createDate",
            "interval": "day",
            "format": "yyyy-MM-dd",
            "min_doc_count": 0,
            "extended_bounds": {
              "min": "2016-08-01",
              "max": "2016-08-31"
            }
          }
        }
      }
    }
    

    extended_bounds 参数的作用是确保您将获得从minmax 的每日存储桶,即使其中没​​有文档。例如,假设您在 2016-08-04 和 2016-08-28 之间每天有 1 个文档,那么如果没有 extended_bounds 参数,您将获得 25 个存储桶(2016-08-04、2016-08-05、 2016 年 8 月 6 日,...,2016 年 8 月 28 日)。

    使用 extended_bounds 参数,您还将获得以下存储桶,但包含 0 个文档:

    • 2016-08-01
    • 2016-08-02
    • 2016-08-03
    • 2016-08-29
    • 2016-08-30
    • 2016-08-31

    【讨论】:

    • 感谢您在此处分享 extended_bounds 选项。
    • 有人可以提供一些关于如何在 sql 中扩展边界的 date_histogram 的指导吗?
    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多