123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- [[lat-lon]]
- === `lat_lon`
- <<geo-queries,Geo-queries>> are usually performed by plugging the value of
- each <<geo-point,`geo_point`>> field into a formula to determine whether it
- falls into the required area or not. Unlike most queries, the inverted index
- is not involved.
- Setting `lat_lon` to `true` causes the latitude and longitude values to be
- indexed as numeric fields (called `.lat` and `.lon`). These fields can be used
- by the <<query-dsl-geo-bounding-box-query,`geo_bounding_box`>> and
- <<query-dsl-geo-distance-query,`geo_distance`>> queries instead of
- performing in-memory calculations.
- [source,js]
- --------------------------------------------------
- PUT my_index
- {
- "mappings": {
- "my_type": {
- "properties": {
- "location": {
- "type": "geo_point",
- "lat_lon": true <1>
- }
- }
- }
- }
- }
- PUT my_index/my_type/1
- {
- "location": {
- "lat": 41.12,
- "lon": -71.34
- }
- }
- GET my_index/_search
- {
- "query": {
- "geo_distance": {
- "location": {
- "lat": 41,
- "lon": -71
- },
- "distance": "50km",
- "optimize_bbox": "indexed" <2>
- }
- }
- }
- --------------------------------------------------
- // AUTOSENSE
- <1> Setting `lat_lon` to true indexes the geo-point in the `location.lat` and `location.lon` fields.
- <2> The `indexed` option tells the geo-distance query to use the inverted index instead of the in-memory calculation.
- Whether the in-memory or indexed operation performs better depends both on
- your dataset and on the types of queries that you are running.
- NOTE: The `lat_lon` option only makes sense for single-value `geo_point`
- fields. It will not work with arrays of geo-points.
|