ES 按距离排序时出错

ES giving error when sorting by distance

我正在尝试按距离对搜索结果进行排序。但是,当我尝试时出现以下错误:

{
   "error": {
      "root_cause": [
         {
            "type": "illegal_argument_exception",
            "reason": "sort option [location] not supported"
         }
      ],
      "type": "search_phase_execution_exception",
      "reason": "all shards failed",
      "phase": "query",
      "grouped": true,
      "failed_shards": [
         {
            "shard": 0,
            "index": "roeselaredev",
            "node": "2UYlfd7sTd6qlJWgdK2wzQ",
            "reason": {
               "type": "illegal_argument_exception",
               "reason": "sort option [location] not supported"
            }
         }
      ]
   },
   "status": 400
}

我发送的查询如下所示:

GET _search
{
    "query": {
        "match_all": [] 
    },
    "sort": [

        {
            "geo_distance": {
                "location": {
                    "lat": 50.9436034,
                    "long": 3.1242917
                },
                "order":"asc",
                "unit":"km",
                "distance_type":"plane"
            }
        },
        {
            "_score": {
                "order":"desc"   
            }        
        }
    ]
}

据我所知,我严格按照文档中的说明进行操作。我没有收到格式错误的查询结果。我只是得到按距离排序选项不受支持的结果。关于我做错了什么有什么想法吗?

查询 dsl 无效 OP 几乎正确 :) 但缺少下划线。

按距离排序时是 _geo_distance 而不是 geo_distance

示例:

GET _search
{
    "query": {
        "match_all": [] 
    },
    "sort": [

        {
            "_geo_distance": {
                "location": {
                    "lat": 50.9436034,
                    "long": 3.1242917
                },
                "order":"asc",
                "unit":"km",
                "distance_type":"plane"
            }
        },
        {
            "_score": {
                "order":"desc"   
            }        
        }
    ]
}