at87958208 2017-04-05 10:44 采纳率: 0%
浏览 1186

求关于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 如果解决这个问题,或者另寻其他解决方案???
[我没有币币,可以线下发红包解决]

  • 写回答

1条回答 默认 最新

  • $encoding 2023-03-26 19:34
    关注

    如果您想在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中。
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿