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