求关于elasticsearch5 同步mysql geopoint数据的问题

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”作为地理位置字段名。如果您的地理位置字段名不同,请在这里替换。

如果以上操作依然无法解决您的问题,您可以考虑其他解决方案:

  • 将数据从MySQL导出到一个中间数据格式,然后使用Logstash或其他工具将其加载到Elasticsearch中。
  • 编写自定义脚本,从MySQL中读取数据,将其转换为Elasticsearch支持的格式,然后使用Elasticsearch API将数据写入Elasticsearch中。