自动将 MySQL 中的数据转入到 Elasticsearch 中
1. 安装 logstash
解压到路径.
2. 测试 logstash
安装路径下
bin
, 进入cmd
测试: 输入下面的内容.
logstash -e ""
3. 设置文件
进入 logstash 路径, 建立一个 mysql 文件. (文件名随便起)
向文件中添加两个文件:
mysql.conf
: MySQL 向 Elasticsearch 中导数据的配置文件.
mysql-connector-java-8.0.18.jar
: MySQL 驱动.
mysql.conf 文件内容.
input {
jdbc {
# mysq1 jdbc connection string to our backup databse
jdbc_connection_string => "jdbc:mysql://localhost:3306/database?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true"
# the user we wish to excute our statement as
jdbc_user => "root"
jdbc_password => "root"
# the path to our downloaded jdbc driver
jdbc_driver_library => "D:\install\ElasticSearch\logstash-7.6.2\mysql\mysql-connector-java-8.0.18.jar"
# the name of the driver class for mysq1
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50"
#以下对应着要执行的 SQL 的绝对路径.
#statement_filepath => ""
statement => "SELECT col1, col2, col3 FROM table"
#定时字段各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测
schedule => "* * * * *"
}
}
output {
elasticsearch {
# ESIP 地址与端口
hosts => "127.0.0.1:9200"
# ES 索引名称 (自定义的)
index => "index"
# 自增 ID 编号
document_id => "%{id}"
document_type => "type"
}
stdout {
# 以 JSON 格式输出
codec => json_lines
}
}
4. 执行代码
1. logstash -e 命令: 在控制台直接执行命令.
2. logstash -f 文件路径: 在控制台执行指定文件内的命令.
启动 Elasticsearch. 执行下面的命令.
logstash -e ../mysql/mysql.conf