1、因为现在用的是ES5,所以elasticsearch-jdbc用不了
2、用了logstash-input-jdbc,这里不知道如何使用类似ES-JDBC的sql查询,例如("select \"test\" as _index, \"test\" as _type, id as _id, name, endtime, starttime, lat as
\"location.lat\", lng as \"location.lon\" from test") ,
想请教 如果使用logstash-input-jdbc 如果解决这个问题,或者另寻其他解决方案???
[我没有币币,可以线下发红包解决]
如果您想在Logstash中使用SQL查询,将数据从MySQL加载到Elasticsearch中,可以使用以下配置文件作为参考:
jdbc {
jdbc_driver_library => "/path/to/mysql-connector-java.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydatabase"
jdbc_user => "myuser"
jdbc_password => "mypassword"
statement => "SELECT id, name, lat as location.lat, lon as location.lon FROM mytable"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "myindex"
}
}
上面的配置文件中,使用了SQL查询语句来从MySQL中的“mytable”表中选择id、name、lat和lon字段。为了将经纬度字段写入Elasticsearch地理位置类型中,需要使用"logstash-filter-coordinates"过滤器。在filter部分添加以下内容:
filter {
coordinates {
"fields" => [ "location" ]
}
}
上面的配置文件中,使用“location”作为地理位置字段名。如果您的地理位置字段名不同,请在这里替换。
如果以上操作依然无法解决您的问题,您可以考虑其他解决方案: