我成功地让 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
**更新* *
我发现它实际上不是平均值,而只是 Elasticsearch 找到的第一个距离。此外,我尝试只设置一个字段来键入:“geo_point”,其中 x 坐标在散列中,但我得到相同的结果。如果有人知道我做错了什么,请告诉我,我将非常感谢任何反馈。