geohash_prefix
edit
Geohashes are a form of lat/lon encoding which divides the earth up into a grid. Each cell in this grid is represented by a geohash string. Each cell in turn can be further subdivided into smaller cells which are represented by a longer string. So the longer the geohash, the smaller (and thus more accurate) the cell is.
While the geohash
option enables indexing the geohash that
corresponds to the lat/lon point, at the specified
precision, the geohash_prefix
option will also
index all the enclosing cells as well.
For instance, a geohash of drm3btev3e86
will index all of the following
terms: [ d
, dr
, drm
, drm3
, drm3b
, drm3bt
, drm3bte
, drm3btev
,
drm3btev3
, drm3btev3e
, drm3btev3e8
, drm3btev3e86
].
The geohash prefixes can be used with the
geohash_cell
query to find points within a
particular geohash, or its neighbours:
PUT my_index { "mappings": { "my_type": { "properties": { "location": { "type": "geo_point", "geohash_prefix": true, "geohash_precision": 6 } } } } } PUT my_index/my_type/1 { "location": { "lat": 41.12, "lon": -71.34 } } GET my_index/_search?fielddata_fields=location.geohash { "query": { "geohash_cell": { "location": { "lat": 41.02, "lon": -71.48 }, "precision": 4,"neighbors": true
} } }