Let's say we have a bunch of documents in an ElasticSearch index. Each documents has multiple locations in an array, like this:
{
"name": "foobar",
"locations": [
{
"lat": 40.708519,
"lon": -74.003212
},
{
"lat": 39.752609,
"lon": -104.998100
},
{
"lat": 51.506321,
"lon": -0.127140
}
]
}
According to the ElasticSearch reference guide
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.
So, is it possible to create a geo distance filter which checks all the locations in the array?
This doesn't seem to work, unfortunately:
{
"filter": {
"geo_distance": {
"distance": "100 km",
"locations": "40, -105"
}
}
}
throws "QueryParsingException[[myIndex] failed to find geo_point field [locations]
" since locations
is not a single geo_point
but an array of geo_point
s.