ElasticSearch中的地理距离排序?

时间:2019-09-17 11:16:31

标签: python-3.x elasticsearch search

参考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" }
    }
}

就我而言,我在纬度和经度都位于单独的浮动字段中。如果无法更改架构,该如何按地理距离排序?

1 个答案:

答案 0 :(得分:1)

您将需要使用新映射创建一个新索引,该映射将包含geo point字段而不是两个字段(经纬度,经度)。然后,您需要将数据索引到新创建的索引中。查看Reindex API-将帮助您将数据移至新索引。