jdbc - Logstash JDBC 适配器:Varbinary 到 UTF-8?(mysql到弹性导入)
问题描述
我正在尝试通过logstash将mysql表导入elasticsearch。一列属于“varbinary”类型,导致以下错误:
[2018-10-10T12:35:54,922][ERROR][logstash.outputs.elasticsearch] An unknown error occurred sending a bulk request to Elasticsearch. We will retry indefinitely {:error_message=>"\"\\xC3\" from ASCII-8BIT to UTF-8", :error_class=>"LogStash::Json::GeneratorError", :backtrace=>["/usr/share/logstash/logstash-core/lib/logstash/json.rb:27:in `jruby_dump'", "/usr/share/logstash/vendor/$
我的logstash配置:
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/xyz"
# The user we wish to execute our statement as
jdbc_user => "test"
jdbc_password => "test"
# The path to our downloaded jdbc driver
jdbc_driver_library => "/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
# our query
statement => "SELECT * FROM x"
}
}
output {
stdout { codec => json_lines }
elasticsearch {
"hosts" => "localhost:9200"
"index" => "x"
"document_type" => "data"
}
}
如何将 varbinary 转换为 uft-8?我必须使用特殊的过滤器吗?
解决方案
尝试在连接字符串中使用可选(characterEncoding=utf8)
jdbc_connection_string => "jdbc:mysql://localhost:3306/xyz?useSSL=false&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true"
推荐阅读
- postgresql - 如何在 Postgresql 数据库中获取 LAST_DDL_TIME 信息(如在 Oracle dba_all_objects 中)
- .net - Visual Studio Mac 2017 - 检测到包降级:Microsoft.AspNetCore.App 2.1.3 到 2.1.1
- css - 纯css创建双边框按钮
- animation - Flutter Animtion 崩溃并在通知侦听器的 AnimationController 错误时引发以下断言
- javascript - 如何创建一个新的 Highcharts 实例?
- c# - Caliburn.micro、WPF 和两个组合框
- sql-server - SSIS Visual Studio 2017 - 转换后的 SSIS 包的 Oracle 连接器问题
- ruby-on-rails - 我的 ruby on rails 应用程序关联错误
- c# - 字符串中的日期时间分别添加时间和日期
- charts - 我可以用谷歌图表库制作一个在两条线之间定义边界的面积图吗?