引用ES documentation,如果lat和lon都在同一个地理类型字段中,则可以基于地理位置进行排序。
{
"sort" : [
{
"_geo_distance" : {
"pin.location" : [-70, 40],
"order" : "asc",
"unit" : "km",
"mode" : "min",
"distance_type" : "arc",
"ignore_unmapped": true
}
}
],
"query" : {
"term" : { "user" : "kimchy" }
}
}
就我而言,我在纬度和经度都位于单独的 float 字段中。如果无法更改架构,该如何按地理距离排序?
最佳答案
您将需要使用新映射创建一个新索引,该映射将包含geo point字段而不是两个字段(经纬度,经度)。然后,您需要将数据索引到新创建的索引中。看一看Reindex API-将帮助您将数据移动到新索引中。
关于python-3.x - ElasticSearch中的地理距离排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57973100/