Geo Distance Queryedit
Filters documents that include only hits that exists within a specific distance from a geo point. Assuming the following indexed json:
{
"pin" : {
"location" : {
"lat" : 40.12,
"lon" : -71.34
}
}
}Then the following simple query can be executed with a geo_distance
filter:
{
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "200km",
"pin.location" : {
"lat" : 40,
"lon" : -70
}
}
}
}
}Accepted Formatsedit
In much the same way the geo_point type can accept different
representations of the geo point, the filter can accept it as well:
Lat Lon As Propertiesedit
{
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "12km",
"pin.location" : {
"lat" : 40,
"lon" : -70
}
}
}
}
}Lat Lon As Arrayedit
Format in [lon, lat], note, the order of lon/lat here in order to
conform with GeoJSON.
{
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "12km",
"pin.location" : [-70, 40]
}
}
}
}Lat Lon As Stringedit
Format in lat,lon.
{
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "12km",
"pin.location" : "40,-70"
}
}
}
}Geohashedit
{
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "12km",
"pin.location" : "drm3btev3e86"
}
}
}
}Optionsedit
The following are options allowed on the filter:
|
|
The radius of the circle centred on the specified location. Points which
fall into this circle are considered to be matches. The |
|
|
How to compute the distance. Can either be |
|
|
Whether to use the optimization of first running a bounding box check
before the distance check. Defaults to |
|
|
Optional name field to identify the query |
|
|
Set to |
geo_point Typeedit
The filter requires the geo_point type to be set on the relevant
field.
Multi Location Per Documentedit
The geo_distance filter can work with multiple locations / points per
document. Once a single location / point matches the filter, the
document will be included in the filter.