Date Histogram Aggregation

More info about histogram aggregation is in the official elasticsearch docs

A multi-bucket aggregation similar to the histogram except it can only be applied on date values. Example of expressions for interval: year, quarter, month, week, day, hour, minute, second

Simple example

{
    "aggregations": {
        "articles_over_time" : {
            "date_histogram" : {
                "field" : "date",
                "interval" : "month"
            }
        }
    }
}

And now the query via DSL:

$dateHistogramAggregation = new DateHistogramAggregation('articles_over_time', 'date', 'month');

$search = new Search();
$search->addAggregation($dateHistogramAggregation);

$queryArray = $search->toArray();

Adding parameters example

Additional parameters can be added to the aggregation. In the following example we will demonstrate how to provide a custom format to the results of the query:

{
    "aggregations": {
        "articles_over_time" : {
            "date_histogram" : {
                "field" : "date",
                "interval" : "1M",
                "format" : "yyyy-MM-dd"
            }
        }
    }
}

And now the query via DSL:


$dateHistogramAggregation = new DateHistogramAggregation('articles_over_time', 'date', 'month');
$dateHistogramAggregation->addParameter('format', 'yyyy-MM-dd');

$search = new Search();
$search->addAggregation($dateHistogramAggregation);

$queryArray = $search->toArray();