乐趣区

关于elasticsearch:Elasticsearch数据同步Logstash普通配置

前言:

最近又从新在看 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 查看。

 

退出移动版