AWS 7.1版Elasticsearch的geo_point字段无法写入WKT坐标问题求助
问题根因
- Elasticsearch 原生版本的
geo_point类型,从 7.6.0 版本才开始支持直接写入 WKT POINT 格式数据。你当前使用的 7.1 版本无该特性,ES 会默认把传入的 WKT 字符串当做 geohash 解析,因此触发unsupported symbol [P]报错。 - 你之前可正常写入 WKT 数据,是因为当时对应字段的类型为
geo_shape,该类型从早期版本就兼容 WKT 格式的各类几何数据写入。你排查geo_shape和geo_point的 mapping 复用问题时,误将字段类型调整为geo_point,才导致原有写入逻辑报错。
解决方案
可根据你的业务场景任选一种方案适配:
- 方案一:升级 Elasticsearch 集群版本到 7.6 及以上,无需修改现有写入逻辑,即可直接向
geo_point字段写入 WKT POINT 格式数据 - 方案二:保持 7.1 版本不变,调整写入数据的格式,换成
geo_point7.1 版本支持的格式即可,示例:// 坐标数组格式,注意顺序是[经度, 纬度] "location": [-71.34, 41.12] // 坐标对象格式 "location": {"lat": 41.12, "lon": -71.34} // geohash字符串格式 "location": "drk2r0p7z" - 方案三:将字段类型改回
geo_shape,无需调整现有批量导入的 WKT 数据写入逻辑,同时还可支持线、面等其他类型的几何数据写入。
内容的提问来源于stack exchange,提问作者Jennifer Crosby
相关产品推荐
相关产品推荐

