mysql数据同步到elasticsearch的方法

在网上找了好多,这里只说一下logstash同步数据到elasticsearch

首先:安装logstash(这个比较简单,就不说了)

        编写配置文件(主要) 命名为****.conf

内容:

input {
    stdin {
    }
 
    jdbc {
        type => "book"
        jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/dataBaseName?/characterEncoding=UTF-8&;useSSL=false"
        jdbc_user => "root"
        jdbc_password => "root"
        jdbc_driver_library =>"D:\ES\logstash-6.2.3\bin\mysql\mysql-connector-java-5.1.46.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        #添加增量类配置
        record_last_run => "true"
        use_column_value => "true"
        tracking_column => "id"
        tracking_column_type => numeric
        clean_run => "false"
        jdbc_page_size => "50000"
      statement_filepath => "D:\ES\logstash-6.2.3\bin\mysql\book.sql"
      schedule => "* * * * *"
    }
    jdbc {
        type => "users"
        jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/dataBaseName?/characterEncoding=UTF-8&;useSSL=false"
        jdbc_user => "root"
        jdbc_password => "root"
        jdbc_driver_library =>"D:\ES\logstash-6.2.3\bin\mysql\mysql-connector-java-5.1.46.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        record_last_run => "true"
        use_column_value => "true"
        tracking_column => "id"
        tracking_column_type => numeric
        clean_run => "false"
        jdbc_page_size => "50000"
        statement_filepath => "D:\ES\logstash-6.2.3\bin\mysql\users.sql"
        schedule => "* * * * *"
    }
}
filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}
output {     
    stdout {
        codec => json_lines
    }
    elasticsearch {
        hosts => "127.0.0.1:9200"
        index => "book"
        document_id => "p%{id}"

    }
      if[type]=="book"{
        elasticsearch {
          #ESIP地址与端口
          hosts => "localhost:9200"
          #ES索引名称(自己定义的)
          index => "book-increment"
          #文档类型
          document_type => "book"
          #文档类型id
          document_id => "%{id}"
      }
    }
  }
     if[type]=="users"{
        elasticsearch {
          hosts => "localhost:9200"
          index => "users-increment"
          document_type => "users"
          document_id => "%{id}"
      }
  }
}

这个是同步两个表中的信息到es中,如果只需同步一张表那就只写一个jdbc{}就ok了。

其中"D:\ES\logstash-6.2.3\bin\mysql\mysql-connector-java-5.1.46.jar"是mysql-connector-java-5.1.46.jar在本机的存放位置。

   "D:\ES\logstash-6.2.3\bin\mysql\users.sql"这个是具体的sql语句存放的位置。"D:\ES\logstash-6.2.3\bin\mysql\users.sql"的内容如下:

   select * from book

或者根据自己的情况,只将自己需要的字段同步到es中。

以上全部工作完成后:再logstash的安装目录下的bin目录下执行:logstash -f  ****.conf 即可,如果在这一步遇到问题:主类找到到,请点击链接:https://blog.csdn.net/lilamei170607/article/details/81780048

猜你喜欢

转载自blog.csdn.net/lilamei170607/article/details/81780174