Date Range Aggregation
More info about date range aggregation is in the official elasticsearch docs
A range aggregation that is dedicated for date values.
Simple example
{
"aggregations": {
"range": {
"date_range": {
"field": "date",
"format": "MM-yyy",
"ranges": [
{ "to": "now-10M/M" },
{ "from": "now-10M/M" }
]
}
}
}
}
And now the query via DSL:
$dateRangeAggregation = new DateRangeAggregation('range');
$dateRangeAggregation->setField('date');
$dateRangeAggregation->setFormat('MM-yyy');
$dateRangeAggregation->addRange(null, 'now-10M/M');
$dateRangeAggregation->addRange('now-10M/M', null);
$search = new Search();
$search->addAggregation($dateRangeAggregation);
$queryArray = $search->toArray();
Or :
$dateRangeAggregation = new DateRangeAggregation(
'range',
'date',
'MM-yyy',
[
['to' => 'now-10M/M'],
['from' => 'now-10M/M'],
]
);
$search = new Search();
$search->addAggregation($dateRangeAggregation);
$queryArray = $search->toArray();