【发布时间】:2012-03-06 14:21:39
【问题描述】:
我在查询中使用geo_distance filter 和tire,它工作正常:
search.filter :geo_distance, :distance => "#{request.distance}km", :location => "#{request.lat},#{request.lng}"
我希望结果会以某种方式包含计算出的到我用于过滤器的地理位置的距离。
有没有办法告诉 elasticsearch 将其包含在响应中,这样我就不必为每个结果在 ruby 中计算它?
== 更新 ==
我 found the answer 在一个 google 群组中:
search.sort do
by "_geo_distance", "location" => "#{request.lat},#{request.lng}", "unit" => "km" if request.with_location?
end
按_geo_distance 排序将产生原始结果中的距离。
【问题讨论】:
-
感谢您按_geo_distance排序!
-
@karmi 对于如何将实际地理距离而不是
sort字段放入结果中,您有一个好的解决方案吗? -
@phoet 完全不确定,必须研究一下...
-
请记住,
sort和filter是两个不同的东西。排序将为您提供按到中心点的距离组织的结果(如果您这样做的话),而过滤器可以为您提供一个边界框,其中所有结果都在您的中心点 X 英里范围内,然后您可以排序结果。
标签: ruby geolocation elasticsearch