有个人长的像洋葱,走着走着就哭了…….

logstash jdbc 导入时 unsigned 类型数据导入ES出错

Logstash | 作者 s60514 | 发布于2020年03月09日 | 阅读数:1904

如题,经过我测试发现应该是unsigned 类型的问题。如果是有符号的数据格式的就没有问题,
具体现象是也不报错,但是导入unsigned 类型数据在ES中会*2或者导入结果为0,哪位知道这种情况应该怎么处理
原始mysql数据类型 int(11) unsigned
导入ES的mapping自动识别为long,手动设置为 byte、short、integer以及keyword还是不能正确识别
 
尝试过sql时候进行数据类型转换,使用 函数convert和CAST,转换为SIGNED和binary,问题依旧如上描述无法解决
 
 
mysql原始数据如下

1.jpg

 
ES插入后的数据如下

2.jpg

 
更新:
尝试sql中加入 SET sql_mode='NO_UNSIGNED_SUBTRACTION'; 但是logstash执行时候解析sql会报错
尝试假如JDBC连接中 &sql_mode=NO_UNSIGNED_SUBTRACTION ,这次不报错了但是问题依旧。。。。
 
更新2:
尝试使用filter、mutate 进行类型转换,依旧失败

filter{
mutate {
convert => { "view_count" => "integer" }
}
}
 备注:为了防止干扰,进行过索引删除、索引设置新的名称、删除所有template
版本
logstash 7.4.2
ES 7.4.0
已邀请:

s60514

赞同来自:

已解决,主从数据库数据不一致造成的,跟logstash无关。。。。

要回复问题请先登录注册