前言:

最近又从新在看ElasticSearch的文档,发现那些DSL语法全都遗记了,所以筹备写一个用ES做贮存的demo小我的项目。其实是用DSL代替之前我的项目的SQL,然而数据以及一些字段还是须要,所以就须要将以前的MySQL数据导入到ElasticSearch中。       

以前的做法是写一个脚本,通过创立索引,创立文档,将MySQL数据插入到ElasticSearch中,当初想通过Elastic中的成员之一——Logstash,来实现初步的导入工作。上面就从根底简略介绍该形式的导入过程吧。 

工具清单:

  1. ElasticSearch
  2. Logstash
  3. Java JDK
    4. mysql-connector-java 

环境搭建:

首先能够先装置JDK,配置环境变量,版本1.8之类的都能够。ElasticSearch和Logstash能够在Elastic官网下载最新版本,最好是两个工具的版本保持一致,目前我这里应用的是7.8版本。mysql-connector-java是一个同步驱动,只须要在启动logstash指定目录就能够。 

配置MySQL同步:

input {    stdin {        }        jdbc {      # mysql 数据库链接,shop为数据库名      jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/rebuild?characterEncoding=UTF-8&useSSL=false"      # 用户名和明码      jdbc_user => "root"      jdbc_password => "root"      # 驱动      jdbc_driver_library => "E:/2setsoft/1dev/logstash-7.8.0/mysqletc/mysql-connector-java-5.1.7-bin.jar"      # 驱动类名      jdbc_driver_class => "com.mysql.jdbc.Driver"      jdbc_paging_enabled => "true"      jdbc_page_size => "50000"      # 执行的sql 文件门路+名称      statement_filepath => "E:/2setsoft/1dev/logstash-7.8.0/mysqletc/run.sql"      # 设置监听距离  各字段含意(由左至右)分、时、天、月、年,全副为*默认含意为每分钟都更新      schedule => "* * * * *"      # 索引类型      type => "content"    }    } filter {    json {        source => "message"        remove_field => ["message"]    }} output {    elasticsearch {        hosts => ["127.0.0.1:9200"]        index => "hhyp"        document_type => "room"        document_id => "%{id}"    }        stdout {        codec => json_lines    }    }

1. jdbc_connection_string

配置示例:jdbc:mysql://IP地址:端口/数据库名?字符集&其余配置参数。 

2. jdbc_driver_library

同步驱动工具相对地址,全称mysql-connector-java-5.1.7-bin.jar,网上能够自行搜寻,版本我这里应用的是5.17。 

3. statement_filepath

须要进行执行的sql 文件,次要是通过SQL语句将数据通过到ES指令,以下就示意将room记录同步到ES。select * from rm_room where delete_time = 0 

4. 附加

导入到ElasticSearch的配置,hosts指定ES服务的地址,index导入时创立的索引名称,document_type相似于MYSQL的表,ducument_id相似与该表的主键。 

启动同步:

  1. 在Logstash根目录下创立一个新文件夹mysqletc,外面搁置驱动文件,MySQL同步配置,MySQL查问同步指令。
  2. 在当前目录下启动cmd,输出命令,bin\logstash -f mysqletc\mysql.conf 就能够了。

3.  最初在kibana中的索引治理就能够看到新同步过去的索引了,要数据能够通过DSL查看。