使用logstash将mysql的数据同步到elasticsearch中

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zz_i80/article/details/82971773

参考博客https://www.cnblogs.com/Hero-/p/9723677.html

在官网上下载与elasticsearch相同版本的logstash。我下载的是6.4版本的

解压到相应的文件夹,logstash就安装完毕了。5.x之后的版本是自带logstash-input-jdbc插件的,因此不需要单独安装。

然后在logstash-6.4.0文件夹下新建一个文件夹mysqletc,
在里面新建mysql.conf,shop.sql文件,并加入对应版本的mysql的驱动,我用的是mysql-connector-java-5.1.47.jar
mysql.conf内容:

input {
    stdin {
    }
    jdbc {
      # mysql 数据库链接,shop为数据库名
      jdbc_connection_string => "jdbc:mysql://ip地址:3306/数据库名称?characterEncoding=UTF-8&useSSL=false"
      # 用户名和密码
      jdbc_user => "username"
      jdbc_password => "password"
      # 驱动
      jdbc_driver_library => "D:/programfiles/elasticsearch/logstash-6.4.0/mysqletc/mysql-connector-java-5.1.47.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 文件路径+名称
      statement_filepath => "D:/programfiles/elasticsearch/logstash-6.4.0/mysqletc/shop.sql"
      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "content"
    }
}
 
filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}
 
output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "cmscontent"
        document_type => "opinion_type"
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

上面的id是数据库的表中的某一个字段,用该字段来表示elasticsearch中的id。据说要小写。。。
shop.sql里面就直接写sql语句就行了
最后开始导入

bin\logstash -f mysqletc\mysql.conf

这边有一个同时同步多张表的方法

https://www.cnblogs.com/xuwenjin/p/8989043.html

猜你喜欢

转载自blog.csdn.net/zz_i80/article/details/82971773