Spring Data Elasticsearch 2.1.16: how to get the sorting distance?

115 views Asked by At

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);

1

There are 1 answers

0
P.J.Meisch On BEST ANSWER

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.