logstash 输入 jdbc 将 mysql tinyint 0/1 作为布尔值 true/false

logstash input jdbc take mysql tinyint 0/1 as boolean true/false

在mysql table中,有一个像这样的tinyint类型,它只存储0或1个值,如is_mel:1

is_mel | tinyint(1)

在 Elasticsearch 索引映射配置中 is_mel 作为整数。

但是从 logstash 日志中可以看出,它将 is_mel 解析为布尔值 true 或 false,如 "is_mel":true,这将导致以下错误,

"type"=>"mapper_parsing_exception",
"reason"=>"failed to parse field [is_mel] of type [integer] in document with id '392289'. Preview of field's value: 'true'"

实际上是 a feature, not a bug :-)

您可以将 tinyInt1isBit=false 附加到您的 JDBC URL 以禁用该行为

jdbc.url=jdbc:mysql://127.0.0.1:3306/testdb?tinyInt1isBit=false
                                                    ^
                                                    |
                                                 add this

Link to the related MySQL doc