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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)