When you try to sort by distance in ES, the result usually contains the distance between matches and your search location:
"hits": {
"total": 3,
"max_score": null,
"hits": [
{
"_index": "circle",
"_type": "doc",
"_id": "7",
"_score": null,
"_source": {
"id": 7,
"coordinates": {
"lon": 112.548443,
"lat": 37.780269
}
},
"sort": [
116.39283058047849
]
},
{
"_index": "circle",
"_type": "doc",
"_id": "5",
"_score": null,
"_source": {
"id": 5,
"coordinates": {
"lon": 112.55061,
"lat": 37.779145
}
},
"sort": [
231.9203763747634
]
}
]
}
The sorting distance is contained in sort
field.
How do I get sorting distance in Spring Date Elasticsearch 2.1.16, with elasticsearchTemplate?
Here is my code for query: Page<CircleES> resultPage = elasticsearchTemplate.queryForPage(searchQuery, CircleES.class);
To get this information in version 2.1.16 you need to use the method
queryForPage(SearchQuery query, Class<T> clazz, SearchResultMapper mapper)
and provide a custom SearchResultMapper
which parses the desired information from the returned data.
Btw, 2.1.16 was released on October 15th, 2018 and is out of support.