Адаптер Logstash JDBC: Varbinary для UTF-8?(MySQL для эластичного импорта) - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь импортировать таблицу mysql вasticsearch через logstash.Один столбец имеет тип "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?Нужно ли использовать специальный фильтр?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Попробуйте использовать опционально в строке подключения ( characterEncoding = utf8 )

jdbc_connection_string => "jdbc:mysql://localhost:3306/xyz?useSSL=false&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true"
0 голосов
/ 10 октября 2018

Хорошо ... потратив на это часы, я нашел решение сразу после публикации этого вопроса:

columns_charset => { "column0" => "UTF8" }
...