Global Aggregation

More info about cardinality aggregation is in the official elasticsearch docs

Defines a single bucket of all the documents within the search execution context. This context is defined by the indices and the document types you’re searching on, but is not influenced by the search query itself.

Simple example

{
    "aggregations": {
        "all_products": {
            "global": {},
            "aggregations": {
                "avg_price": {
                    "avg": {
                        "field": "price"
                    }
                }
            }
        }
    }
}

And now the query via DSL:

$avgAggregation = new AvgAggregation('avg_price', 'price');
$globalAggregation = new GlobalAggregation('all_products');
$globalAggregation->addAggregation($avgAggregation);

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

$queryArray = $search->toArray();