如果您想在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”作为地理位置字段名。如果您的地理位置字段名不同,请在这里替换。
如果以上操作依然无法解决您的问题,您可以考虑其他解决方案:
- 将数据从MySQL导出到一个中间数据格式,然后使用Logstash或其他工具将其加载到Elasticsearch中。
- 编写自定义脚本,从MySQL中读取数据,将其转换为Elasticsearch支持的格式,然后使用Elasticsearch API将数据写入Elasticsearch中。