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

82 lines
2.8 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 <<geo-point,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
<<geo-point,geopoint>> field that's going to be filtered by
setting the `geohash_prefix` option:
[source,js]
--------------------------------------------------
PUT /my_index
{
"mappings" : {
"location": {
"properties": {
"pin": {
"type": "geo_point",
"geohash": true,
"geohash_prefix": true,
"geohash_precision": 10
}
}
}
}
}
--------------------------------------------------
// CONSOLE
// TEST[warning:geo_point geohash parameter is deprecated and will be removed in the next major release]
// TEST[warning:geo_point geohash_precision parameter is deprecated and will be removed in the next major release]
// TEST[warning:geo_point geohash_prefix parameter is deprecated and will be removed in the next major release]
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]
--------------------------------------------------
GET /_search
{
"query": {
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geohash_cell": {
"pin": {
"lat": 13.4080,
"lon": 52.5186
},
"precision": 3,
"neighbors": true
}
}
}
}
}
--------------------------------------------------
// CONSOLE
// TEST[continued]
[float]
==== Ignore Unmapped
When set to `true` the `ignore_unmapped` option will ignore an unmapped field
and will not match any documents for this query. This can be useful when
querying multiple indexes which might have different mappings. When set to
`false` (the default value) the query will throw an exception if the field
is not mapped.