关于python:elasticsearch_dsl按地理位置距离搜索并获取结果和距离

elasticsearch_dsl search by geo location distance and get results and distance

我有一个索引,保存存储的位置数据。

当使用python的elasticsearch_dsl时,我想找到给定位置最近的商店,按距离排序。由于ES已经计算了距离,是否可以将其作为搜索结果的一部分?

是否可以在单个查询中使用elasticsearch_dsl?或者我需要对位置lat,lon进行后处理,并手动计算距离?

谢谢。


您可以按距离排序,并在结果命中中得到计算出的距离。

例如:

1
2
3
4
5
6
7
8
9
10
s = Search().sort(
    {
       "_geo_distance" : {
           "location" : {"lat": 40,"lon": -70},
           "order" :"asc",
           "unit" :"km",
           "distance_type" :"arc"
        }
    }
)