You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch计算两点经纬度距离时出现lang字段解析异常如何解决

问题原因
  • 脚本字段结构不符合ES规范:script_fields下自定义字段(你的distance)的直接子属性只能是script,lang、params、脚本内容均需嵌套在script内部,你当前直接把lang放在distance下,ES无法识别该参数,这也是你收到对应报错的直接原因。
  • 脚本内容字段名错误:Elasticsearch 7.x及以上版本中,painless脚本的内容字段名为source,而非script。
  • 嵌套数组字段访问语法错误:ES的doc值访问不支持[0]这类数组下标写法,数组类型的嵌套字段会被扁平化存储,直接写字段路径即可。
修正后的代码
await this.esService.search({
    index: IndexName,
    body: {
        sort: [{ avg_rating: { order: "desc" } }],
        "script_fields" : {
            "distance" : {
                "script": {
                    "lang": "painless",
                    "params" : {
                        "lat" : 47.1,
                        "lon" : 8.1
                    },
                    "source" : "doc['user.userAddresses.location'].distanceInKm(params.lat,params.lon)"
                }
            }
        },
        from: offset,
        size: take,
        query: finalQuery
    }
})

内容的提问来源于stack exchange,提问作者user13963926

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:54:03