Chapter 38. Geo-aggregations
Although filtering or scoring results by geolocation is useful, it is often more useful to be able to present information to the user on a map. A search may return way too many results to be able to display each geo-point individually, but geo-aggregations can be used to cluster geo-points into more manageable buckets.
Three aggregations work with fields of type geo_point:
geo_distance-
Groups documents into concentric circles around a central point.
geohash_grid-
Groups documents by geohash cell, for display on a map.
geo_bounds-
Returns the
lat/loncoordinates of a bounding box that would encompass all of the geo-points. This is useful for choosing the correct zoom level when displaying a map.
geo_distance Aggregation
The geo_distance agg is useful for searches such as
to “find all pizza restaurants within 1km of me.” The search results
should, indeed, be limited to the 1km radius specified by the user, but we can
add “another result found within 2km”:
GET/attractions/restaurant/_search{"query":{"filtered":{"query":{"match":{![]()
"name":"pizza"}},"filter":{"geo_bounding_box":{"location":{![]()
"top_left":{"lat":40,8,"lon":-74.1},"bottom_right":{"lat":40.4,"lon":-73.7}}}}}},"aggs":{"per_ring":{"geo_distance":
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access