有不同的方法可以做到这一点。其中之一是使用
date_histogram
受仅选择所需日期的筛选器约束的聚合:
{
"aggs": {
"5_days": {
"filter": {
"filter": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"range": {
"date": {
"from": "2016-12-01T00:00:00.000Z",
"to": "2016-12-02T00:00:00.000Z"
}
}
},
{
"range": {
"date": {
"from": "2016-12-08T00:00:00.000Z",
"to": "2016-12-09T00:00:00.000Z"
}
}
},
{
"range": {
"date": {
"from": "2016-12-15T00:00:00.000Z",
"to": "2016-12-16T00:00:00.000Z"
}
}
},
{
"range": {
"date": {
"from": "2016-12-22T00:00:00.000Z",
"to": "2016-12-23T00:00:00.000Z"
}
}
},
{
"range": {
"date": {
"from": "2016-12-29T00:00:00.000Z",
"to": "2016-12-30T00:00:00.000Z"
}
}
}
]
}
}
},
"aggs": {
"samples": {
"date_histogram": {
"field": "date",
"interval": "day"
}
}
}
}
}
}
第二种方法更简洁,可以归结为使用
date_range
aggregation
只有选定的日期:
{
"aggs": {
"range": {
"date_range": {
"field": "date",
"ranges": [
{ "from": "2016-12-01T00:00:00.000Z", "to": "2016-12-02T00:00:00.000Z" },
{ "from": "2016-12-08T00:00:00.000Z", "to": "2016-12-09T00:00:00.000Z" },
{ "from": "2016-12-15T00:00:00.000Z", "to": "2016-12-16T00:00:00.000Z" },
{ "from": "2016-12-22T00:00:00.000Z", "to": "2016-12-23T00:00:00.000Z" },
{ "from": "2016-12-29T00:00:00.000Z", "to": "2016-12-30T00:00:00.000Z" }
]
}
}
}
}