gpt4 book ai didi

java - Elasticsearch:根据到 A 点的距离排序项目,但显示从 B 点计算的距离

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:14 24 4
gpt4 key购买 nike

情况:充满地理点的 Elasticsearch map 。

我希望这些点按到位置 A 的距离排序,但需要它们到我的位置 B 的距离。就像“显示距离纽约较近的人以及他们与我的距离”

到目前为止我得到了什么:

// filterquery is a simple matchall() filter
FilteredQueryBuilder filteredQuery = QueryBuilders.filteredQuery(
filterquery,
FilterBuilders.geoDistanceRangeFilter("location")
);


SearchResponse search = client.prepareSearch("myindex")
.setTypes("user")
.setQuery(filteredQuery)
.addSort(SortBuilders.geoDistanceSort("location")
.point(newyork_lat, newyork_lon)
.unit(DistanceUnit.KILOMETERS)
.order(SortOrder.ASC))
.execute()
.actionGet();

这只会向我显示靠近纽约的所有用户,但距离 ofc 仍然计算到纽约,而不是我。我认为我需要某种聚合,但我没有得到正确的结果。我需要将 myLocation.lat 和 myLocation.lon 放在哪里?

最佳答案

我想说最好的选择是使用 script field计算距您的推荐点的距离。

类似下面的内容应该可以满足您的需求

{
"script_fields": {
"distanceFromMe": {
"script": "doc['location'].distanceInKm(lat, lon)"
}
}
}

您可以了解有关脚本编写的更多信息 herehere ..

关于java - Elasticsearch:根据到 A 点的距离排序项目,但显示从 B 点计算的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com