今天在做数据同步到ES的过程中,发现数据经纬度数据无法插入到es中,经排查,记录如下:
报了如下异常:

Elasticsearch exception [type=mapper_parsing_exception,reason=failed to parse field [coordinate] of type [geo_point]]
在这里插入图片描述
代码里是通过ES的GeoPoint来存数据
在这里插入图片描述
刚开始找问题,报错的原因,同事说要纬度在前,经度在后,我发现我确实写反了,如果调整过来,还是报错
在这里插入图片描述
打印经纬度没有发现异常:
在这里插入图片描述
于是在网上找解决办法,找到一篇文章,es支持的数据导入格式:
在这里插入图片描述
于是想着不用GeoPoint,改为上述第二种方式,字符串的形式,于是,数据库查询出来的字段就是拼接好的字段:

关键SQL语句如下,使用concat_ws将纬度和经度拼成字符串

select concat_ws(',', si.`WEIDU`, si.`JINGDU`) as coordinate ftom xxx

在这里插入图片描述
实体中的映射字段,对应上一步中数据库查出来的coordinate字段
在这里插入图片描述
改成字符串拼接的方式后,再次尝试,这次能将数据成功同步到es中了!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐