Elasticsearch 地理距离排序

adr*_*rin 5 elasticsearch

参考Sorting的文档,地理距离排序一节,问题如下:

给出的例子如下:

GET /_search
{
    "sort" : [
        {
            "_geo_distance" : {
                "pin.location" : [-70, 40],
                "order" : "asc",
                "unit" : "km",
                "mode" : "min",
                "distance_type" : "sloppy_arc"
            }
        }
    ],
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
Run Code Online (Sandbox Code Playgroud)

映射中的字段是否pin.location包含地理位置?或者它是搜索 API 理解为包含基本位置的关键字吗?如果它是一个应该包含位置的字段,那么排序项不应该包含设置nested_path为吗pin?如果它是一个参数,那么elasticsearch从哪里获取项目的位置?

另外,文档提到sort_mode作为参数,但代码使用mode,我想这是一个拼写错误?

Val*_*Val 2

pin.location是包含要排序的位置的字段的名称。

nested_pathpin如果是一个简单对象(即不是一个对象),则不需要nested

mode都是sort_mode正确的名称,但sort_mode已不推荐使用,因此mode应优先使用。