大多数情况下我们的数据都存放在了数据库中,但是elasticsearch它有自己的索引库,那么如果我们在做搜索的是时候就需要将数据库中的数据同步到elasticsearch中,在这里我们使用logstash的logstash进行与数据库的同步,对于logstash与数据库同步,我们可以设置elasticsearch与数据库同步的时间,使用这种方式进行同步还是很方便的。
1、logstash简介
Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
2、下载并安装logstash
logstash下载地址:https://www.elastic.co/cn/downloads/logstash
注意:下载的版本要和你的elasticsearch的版本号一致,我的版本elasticsearch6.5.2
下载后之后,直接解压就好
(elasticsearch的环境搭建可参考之前的文章)
3、配置logstash
3.1、引入mysql的jar包
3.2、创建一个 mysql.conf 的配置文件(命名随意),用来将es与数据库关联。
input {
jdbc {
# mysql 数据库链接,shop为数据库名
jdbc_connection_string => "jdbc:mysql://127.0.01:3306/demo"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "123456"
# 驱动
jdbc_driver_library => "D:\\logstash-6.5.2\\mysql-connector-java-5.1.46.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
#清空上次的sql_last_value记录
clean_run => true
#执行语句
statement => "select * from t_blog where update_time >:sql_last_value and update_time < now() order by update_time desc"
}
}
output {
elasticsearch {
# ES的IP地址及端口
hosts => ["localhost:9200"]
# 索引名称
index => "esblog"
# 需要关联的数据库中有有一个id字段,对应类型中的id
document_id => "%{id}"
}
}
复制
4、启动elasticsearch
5、Kibana
5.1、Kibana 简介
5.2、Kibana 安装
下载地址:https://www.elastic.co/downloads/kibana
注意:下载的版本要和你的elasticsearch的版本号一致,我的版本elasticsearch6.5.2
下载后之后,直接解压就好
在D:\kibana\kibana-6.5.2-windows-x86_64\bin目录下运行kibana.bat
访问:http://localhost:5601,出现以下界面即完成安装。
6、启动logstash
在D:\logstash-6.5.2\bin目录下打开cmd控制台,输入 logstash -f ../config/mysql.conf
7、在kibana查询同步mysql到es数据
关注公众号