Logstash是来自于ElasticSearch官方的组件,一个集数据收集和同步的组件。
如果mysql数据库表设计满足这两点,就可以考虑使用Logstash
1、id字段:id对应的ElasticSearch中的_id,id设置也必须来自mysql中的id字段,这个提供了mysql与ElasticSearch中数据字表的映射关系,如果mysql数据更新,那么对应的ElasticSearch数据会重新写
2、时间字段:mysql中需要存在更新的时间字段让Logstash来进行标识,下次请求可以通过时间对比来进行数据更新及同步。
一、下载
官网下载地址:https://www.elastic.co/cn/
二、安装
1.解压压缩包 logstash-7.5.1.zip后
2.因为需要与mysql进行连接,需要将mysql-connector-java-5.1.32.jar放在目录中,如图
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
2.2无条件查询,如图
POST /blog/_search
{}