Elasticsearchである地点から距離が近い順にソートしたい
調べると Geo Distance Sorting というのでできるみたい
以下のようなクエリになる
GET /_search { "sort" : [ { "_geo_distance" : { "pin.location" : [-70, 40], "order" : "asc", "unit" : "km", "mode" : "min", "distance_type" : "arc", "ignore_unmapped": true } } ], "query" : { "term" : { "user" : "kimchy" } } }
distance_typeは距離の計算方法で、arc: 円弧 (デフォルト) かplane: 平面のどちらか
これはPostgreSQLのgeometryとgeographyの話と同じ
【PostgreSQL】地球は丸かった - UGA Boxxx
modeはフィールドに複数のGEOポイントがある場合に指定する
デフォルトで昇順でソートする場合は最短距離が考慮され、降順でソートする場合は最長距離が考慮される
この他にmin:最小、max:最大、median:中央値、avg:平均を指定することができる