指定された座標からの距離でソートされた結果を 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 が検出した最初の距離にすぎないことがわかりました。また、入力するフィールドを 1 つだけ設定しようとしました: "geo_point" をハッシュ内の x 量の座標で設定しようとしましたが、同じ結果が得られます。誰かが私が間違っていることを知っている場合は、お知らせください。フィードバックをいただければ幸いです。