Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.1k views
in Technique[技术] by (71.8m points)

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...