# Geo Distance Aggregation

> More info about geo distance aggregation is in the [official elasticsearch docs][1]

A multi-bucket aggregation that works on geo_point fields
and conceptually works very similar to the range aggregation.

## Simple example

```JSON
{
    "aggregations" : {
        "rings_around_amsterdam" : {
            "geo_distance" : {
                "field" : "location",
                "origin" : "52.3760, 4.894",
                "ranges" : [
                    { "to" : 100 },
                    { "from" : 100, "to" : 300 },
                    { "from" : 300 }
                ]
            }
        }
    }
}
```

And now the query via DSL:

```php
$geoDistanceAggregation = new GeoDistanceAggregation(
    'rings_around_amsterdam',
    'location',
    '52.3760, 4.894',
    [
        ['to' => 100],
        ['from' => 100, 'to' => 300],
        ['from' => 300],
    ]
);

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

$queryArray = $search->toArray();
```

[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geodistance-aggregation.html