Я пытаюсь отправить данные в ES с сервера MySQL, используя logstash. Я использую ES 6.3.0 и Logstash 6.3.0. Мой конфигурационный файл выглядит следующим образом:
input {
jdbc {
jdbc_driver_library => "/Users/.../mysql-connector-java-5.1.46-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://..."
jdbc_user => "user"
jdbc_password => "****"
statement => "SELECT * FROM user.customer"
}
}
output {
#stdout { codec => json_lines }
elasticsearch {
hosts => "localhost"
index => "customers"
}
}
Я использую базу данных MySQL с одной таблицей, в которой есть несколько столбцов разных типов данных. Когда я пытаюсь отправить данные в ES, я получаю следующее сообщение об ошибке:
[2018-07-03T14:39:06,088][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"customers", :_type=>"doc", :_routing=>nil}, #<LogStash::Event:0x2ff3608c>], :response=>{"index"=>{"_index"=>"customers", "_type"=>"doc", "_id"=>"p-MnYGQBzIWWUpovTpES", "status"=>400, "error"=>{"type"=>"illegal_argument_exception", "reason"=>"mapper [uc_score] cannot be changed from type [long] to [float]"}}}}
После некоторых исследований я обнаружил, что вы не можете больше использовать разные типы в ES, но я не совсем уверен, что они означают. Что я могу сделать, чтобы решить эту проблему? Что такое умный способ отправки данных из базы данных MySQL в ES? Я планирую использовать ES для анализа и визуализации данных в базе данных.