WARNING: Version 1.7 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 Filter
editGeohash Cell Filter
editThe geohash_cell
filter 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 work 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 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
setup. 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 neighbor
option of the filter offers the possibility to filter cells
next to the given cell.
{ "filtered" : { "query" : { "match_all" : {} }, "filter" : { "geohash_cell": { "pin": { "lat": 13.4080, "lon": 52.5186 }, "precision": 3, "neighbors": true } } } }
Caching
editThe result of the filter is not cached by default. The
_cache
parameter can be set to true
to turn caching on.
By default the filter uses the resulting geohash cells as a cache key.
This can be changed by using the _cache_key
option.