OpenSearch/docs/reference/query-dsl/geohash-cell-query.asciidoc

64 lines
2.0 KiB
Plaintext

[[query-dsl-geohash-cell-query]]
== Geohash Cell Query
The `geohash_cell` query provides access to a hierarchy of geohashes.
By defining a geohash cell, only <<mapping-geo-point-type,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
<<mapping-geo-point-type,geopoint>> field that's going to be filtered by
setting the `geohash_prefix` option:
[source,js]
--------------------------------------------------
{
"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.
[source,js]
--------------------------------------------------
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geohash_cell": {
"pin": {
"lat": 13.4080,
"lon": 52.5186
},
"precision": 3,
"neighbors": true
}
}
}
}
--------------------------------------------------