WARNING: The 2.x versions of Elasticsearch have passed their EOL dates. If you are running a 2.x version, we strongly advise you to upgrade.
This documentation is no longer maintained and may be removed. For the latest information, see the current Elasticsearch documentation.
Filtering by Geo Pointedit
Four geo-point filters can be used to include or exclude documents by geolocation:
-
geo_bounding_box
- Find geo-points that fall within the specified rectangle.
-
geo_distance
- Find geo-points within the specified distance of a central point.
-
geo_distance_range
- Find geo-points within a specified minimum and maximum distance from a central point.
-
geo_polygon
- Find geo-points that fall within the specified polygon. This filter is very expensive. If you find yourself wanting to use it, you should be looking at geo-shapes instead.
Each filter performs a slightly different calculation to check whether a point falls into the containing area, but the process is similar. The requested area is converted into a range of quad/geohash prefix tokens and used to search the inverted index for documents who share the same tokens.
Geo-filters are relatively expensive — they should be used on as few documents as
possible. First remove as many documents as you can with cheaper filters, like
term
or range
filters, and apply the geo-filters last.
The bool
filter will do this for you automatically. First it
applies any bitset-based filters (see All About Caching) to exclude as many
documents as it can as cheaply as possible. Then it applies the more
expensive geo or script filters to each remaining document in turn.