elasticsearch 将Logstash与MySQL和Elasticsearch一起使用,无法发送数据
我正在尝试使用logstash从MySQL服务器向ES发送数据。我使用的是ES 6.3.0和Logstash 6.3.0。我的配置文件如下所示:
elasticsearch 将Logstash与MySQL和Elasticsearch一起使用,无法发送数据,
elasticsearch,logstash,
elasticsearch,Logstash,我正在尝试使用logstash从MySQL服务器向ES发送数据。我使用的是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_connec
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]"}}}}
[2018-07-03T14:39:06088][WARN][logstash.outputs.elasticsearch]无法将事件索引到elasticsearch。{:状态=>400,:操作=>[“索引”,{:{:{u id=>nil,:{u index=>“客户”,:{u类型=>“文档”,:{u路由=>nil},{35;],:响应=>{“索引”=>{u索引”=>“客户”,“{u类型=>“文档”,“{u id”=>“p-mnygqbziwwwwupovtpes”,“状态”=>400,“错误”=>“类型”=>“非法参数”;“每个原因”=>“得分”=>“无法从浮动类型更改为”}}
在做了一些研究之后,我发现你不能再在ES中使用不同的类型了,我不知道它们到底是什么意思。我能做些什么来解决这个问题?从MySQL数据库向ES发送数据的智能方式是什么?我计划使用ES分析和可视化数据库中的数据。这是因为使用JDBC驱动程序转换类型的能力有限 字段
uc\U分数
具有MySQL类型long
thas不会由JDBC在elasticsearch类型float
中自动转换。因此,您应该将此片段添加到filter
部分的logstash管道配置中,以转换uc_分数
字段:
filter {
mutate { convert => {"uc_score" => "float"} }
}
不要忘记重新启动logstash实例
资料来源: