Logstash同步Mysql数据到ElasticSearch

Logstash是来自于ElasticSearch官方的组件,一个集数据收集和同步的组件。

如果mysql数据库表设计满足这两点,就可以考虑使用Logstash

1、id字段:id对应的ElasticSearch中的_id,id设置也必须来自mysql中的id字段,这个提供了mysql与ElasticSearch中数据字表的映射关系,如果mysql数据更新,那么对应的ElasticSearch数据会重新写
2、时间字段:mysql中需要存在更新的时间字段让Logstash来进行标识,下次请求可以通过时间对比来进行数据更新及同步。

一、下载

官网下载地址:https://www.elastic.co/cn/
Logstash同步Mysql数据到ElasticSearch_第1张图片

二、安装

1.解压压缩包 logstash-7.5.1.zip后
2.
2.因为需要与mysql进行连接,需要将mysql-connector-java-5.1.32.jar放在目录中,如图
Logstash同步Mysql数据到ElasticSearch_第2张图片
3.配置同步文件:打开logstash-7.5.1/logstash-7.5.1/config/logstash-sample.conf

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
		jdbc{
			 #jdbc驱动包位置
			 jdbc_driver_library => "D:\\logstash-7.5.1\\logstash-7.5.1\\mysql-connector-java-5.1.32.jar"
			 #jdbc类
			 jdbc_driver_class => "com.mysql.jdbc.Driver"
			 #mysql数据库连接信息
			 jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/es_blog"
			 #mysql用户
			 jdbc_user => "root"
			 #mysql密码
			 jdbc_password => "mysql"
			 #定时任务
			 schedule => "* * * * *"
			 clean_run => true
			 #要执行的语句
			 statement => "select * from t_blog where update_time > :sql_last_value and update_time < NOW() order by update_time desc"
		}

  #beats {
  #  port => 5044
  #}
  
}

output {
  elasticsearch {
	#端口
    hosts => ["http://localhost:9200"]
	#索引
	index => "blog"
	#_id
	document_id => "%{id}"
    #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}
三、启动执行

1.启动ElasticSearch,双击bin/elasticsearch.bat
2.启动kibana,双击bin/kibana.bat
3.启动Logstash时需要使用配置好的文件,如图

logstash -f ../config/logstash-sample.conf

在这里插入图片描述
4.启动成功,开始执行sql命令,如图
在这里插入图片描述

四、测试

1.浏览器访问kibana http://localhost:5601
2.1查询命令,如图结果

GET /blog/_stats

在这里插入图片描述

Logstash同步Mysql数据到ElasticSearch_第3张图片
2.2无条件查询,如图

POST /blog/_search
{}

在这里插入图片描述
Logstash同步Mysql数据到ElasticSearch_第4张图片

你可能感兴趣的:(中间件,elasticsearch,mysql,es,sql,数据库)