gpt4 book ai didi

ruby-on-rails - 如何使用多个位置的ElasticSearch _geo_distance计算最近的位置

转载 作者:行者123 更新时间:2023-12-03 00:29:48 25 4
gpt4 key购买 nike

我成功地让ElasticSearch返回了根据距给定坐标的距离排序的结果。问题是正在排序的距离是可用位置到坐标的平均距离,我需要在其中具有最接近的位置。
ElasticSearch说我可以给一个选项“sort_mode”(Note: the geo distance sorting supports sort_mode options: min, max and avg.),但是没有给出一个包含多个位置的示例。

我可以通过results.sort值看到返回的是平均距离,而不是最接近的距离。我最终需要的是到最近位置的距离。

如果有人可以帮助我使它正常工作,我将不胜感激!谢谢!

我的相关代码:

  mapping do
indexes :locations do
indexes :geolocation, type: "geo_point"
end
end


sort do
by :_geo_distance,
:sort_mode => "min", #THIS DOES NOT WORK! FIELDS ARE ORDERED BY AVERAGE DISTANCE, NOT SHORTEST
"locations.geolocation" => coordinates,
:order => sort_direction,
:unit => "km"
end
end

** UPDATE **

我发现它实际上不是平均值,而只是Elasticsearch找到的第一个距离。
另外,我尝试只设置一个字段来键入:“geo_point”,哈希中的x坐标为x,但是这样我得到的结果相同。如果有人知道我在做什么错,请告诉我,我将非常感谢您的反馈。

最佳答案

我不知道 ruby ,但是这似乎比 ruby 问题更像一个Elasticsearch问题。

如果您的字段实际上被索引为geo_point,那么您应该能够按最小距离排序。

较新版本的ES中,排序模式的键已更改,因此,根据ES的版本,您可能需要将sort_mode更改为mode

如果将sort_mode更改为mode不起作用,您是否可以尝试发布Elasticsearch报告的类型映射以及您正在使用的ES版本?

获取类型映射的详细记录在这里:get mapping

关于ruby-on-rails - 如何使用多个位置的ElasticSearch _geo_distance计算最近的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984293/

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