0

当您尝试在 ES 中按距离排序时,结果通常包含匹配项与您的搜索位置之间的距离:

  "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
    ]
  }
]

} 排序距离包含在sort字段中。如何使用 elasticsearchTemplate 在 Spring Date Elasticsearch 2.1.16 中获得排序距离?

这是我的查询代码: Page<CircleES> resultPage = elasticsearchTemplate.queryForPage(searchQuery, CircleES.class);

4

1 回答 1

1

要在 2.1.16 版本中获取此信息,您需要使用该方法

queryForPage(SearchQuery query, Class<T> clazz, SearchResultMapper mapper)

并提供一个自定义SearchResultMapper,从返回的数据中解析所需的信息。

顺便说一句,2.1.16 于 2018 年 10 月 15 日发布,现已不受支持。

于 2021-01-16T12:36:23.167 回答