自动将 MySQL 中的数据转入到 Elasticsearch 中 (logstash)

自动将 MySQL 中的数据转入到 Elasticsearch 中

1. 安装 logstash

下载链接:
https://www.elastic.co/cn/downloads/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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YKenan/article/details/105950230