Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.

Geo Centroid Aggregation

More info about histogram aggregation is in the official elasticsearch docs

A metric aggregation that computes the weighted centroid from all coordinate values for a Geo-point datatype field. The data type of the field that is specified for the aggregation must be geo-point.

Simple example

{
    "query" : {
        "match" : { "crime" : "burglary" }
    },
    "aggs" : {
        "centroid" : {
            "geo_centroid" : {
                "field" : "location"
            }
        }
    }
}

And now the query via DSL:

$geoCentroidAggregation = new GeoCentroidAggregation('centroid', 'location');

$search = new Search();
$search->addQuery(new MatchQuery('crime', 'burglary'));
$search->addAggregation($geoCentroidAggregation);

$queryArray = $search->toArray();

Advanced example

The query provides more information when when combined as a sub-aggregation to other bucket aggregations. Here is an example of that:


{
    "query" : {
        "match" : { "crime" : "burglary" }
    },
    "aggs" : {
        "towns" : {
            "terms" : { "field" : "town" },
            "aggs" : {
                "centroid" : {
                    "geo_centroid" : { "field" : "location" }
                }
            }
        }
    }
}

And now via DSL:

$geoCentroidAggregation = new GeoCentroidAggregation('centroid', 'location');
$termsAggregation = new TermsAggregation('towns', 'town');
$termsAggregation->addAggregation($geoCentroidAggregation);

$search = new Search();
$search->addQuery(new MatchQuery('crime', 'burglary'));
$search->addAggregation($termsAggregation);

$queryArray = $search->toArray();