将mysql数据同步到elasticsearch时,mysql的float类型出现精度损失及解决方法

场景描述

之前将mysql数据同步到ES,采用的是如下的架构,打造的是千万级别的实时搜索系统

详情请看 https://blog.csdn.net/laoyang360/article/details/52227541#commentBox

最近运营突然找到我说有一个问题就是为什么数据库源表这种是

2.99肿么变成了这个2.990000009536743,出现了精度上面的一些问题。一开始我也是一脸懵逼,以为是ES的问题,但是一想好像不对,ES的数据类型就是浮点型,不可能是ES把2.99转换成2.990000009536743了。

于是就开始分析了。

出问题只可能是三个位置:ES、mysql、同步过程

上面首先就排除了ES的问题,然后是同步的过程,经过验证同步过程中是没有这种骚操作的。那就只可能是mysql的问题

但是特别奇怪的是通过SQL语句查询出来的数据是正常的呀。

于是查看了一下出现问题的字段类型,发现这个字段的类型居然是float(8, 2),搞得我一脸懵逼,

因为

FLOAT类型用于表示近似数值数据类型。SQL标准 允许在关键

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值