WARNING: Version 2.4 of Elasticsearch has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Geohash Cell Query
editGeohash Cell Query
editThe geohash_cell
query provides access to a hierarchy of geohashes.
By defining a geohash cell, only geopoints
within this cell will match this filter.
To get this filter working all prefixes of a geohash need to be indexed. In
example a geohash u30
needs to be decomposed into three terms: u30
,
u3
and u
. This decomposition must be enabled in the mapping of the
geopoint field that’s going to be filtered by
setting the geohash_prefix
option:
{ "mappings" : { "location": { "properties": { "pin": { "type": "geo_point", "geohash": true, "geohash_prefix": true, "geohash_precision": 10 } } } } }
The geohash cell can be defined by all formats of geo_points
. If such a cell is
defined by a latitude and longitude pair the size of the cell needs to be
set up. This can be done by the precision
parameter of the filter. This
parameter can be set to an integer value which sets the length of the geohash
prefix. Instead of setting a geohash length directly it is also possible to
define the precision as distance, in example "precision": "50m"
. (See
Distance Units.)
The neighbors
option of the filter offers the possibility to filter cells
next to the given cell.
{ "bool" : { "must" : { "match_all" : {} }, "filter" : { "geohash_cell": { "pin": { "lat": 13.4080, "lon": 52.5186 }, "precision": 3, "neighbors": true } } } }