zho*_*wei 3 elasticsearch date-histogram
我想在特定时间段内获取 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"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到的 date_histogram 不在范围内。
您快完成了,您需要添加一个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"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该extended_bounds参数的作用是确保即使其中没有文档,您也能每天从min到获取存储桶max。例如,假设您在 2016-08-04 和 2016-08-28 之间每天有 1 个文档,那么如果没有该extended_bounds参数,您将获得 25 个存储桶 (2016-08-04, 2016-08-05, 2016-08 -06, ..., 2016-08-28)。
使用该extended_bounds参数,您还将获得以下存储桶,但包含 0 个文档:
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |