我想在特定时期获取date_histogram,如何限制日期?我应该使用extended_bounds参数吗?例如:我想查询'2016-08-01'和'2016-08-31'之间的date_histogram,间隔是day。我用这个表达式查询:
{
"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不在范围内。
答案 0 :(得分:3)
您几乎就在那里,您需要添加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
参数的作用是确保即使其中没有文档,您也可以获得从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个文档: