一、准备工作
1.操作系统 Ubuntu 16.04.1
2.数据库版本 mysql 5.7.20
3.Logstash的下载链接
4.mysql-connector
二、在系统上查看Curl 工具是否已安装
命令:dpkg -l
发现ubuntnu里有这个工具了就可以接着下一步了
三、在系统上装Elasticsearch
装ES的教程就不细说了,ES装好以后检查服务器中是否可以通过curl命令访问到ES服务
curl -u ES用户名:ES密码 -XGET '服务IP:9200/?pretty'
或者
curl -u ES用户名 -XGET 'localhost:9200/?pretty'
输入密码,默认用户名elastic 密码changeme,出现以下结果说明curl是可以访问到ES服务的
三、安装Logstash
先解压下载的压缩包然后安装插件
命令分别是(在Logstash主目录下运行):
./bin/logstash-plugin install logstash-input-jdbc
./bin/logstash-plugin install logstash-output-elasticsearch
四、在数据库中添加字段
alter table dialogs add updatetime timestamp null default current_timestamp on update current_timestamp ;
五、配置ES-数据库同步的配置文件
首先把jar包拖到当前路径下
接着创建数据库在服务器中中创建Logstash配置文件
文件名为logstash-mysql-es.conf
然后往上写配置参数
library写自己jar文件名
class照着抄
连接参数localhost,端口默认3306,最后是要同步的数据库名
schedule => "*"表示每分钟刷新一次,这也是MySQL数据同步的最小频率
六、同步数据
服务器中指定参数启动Logstash服务,执行命令:
logstash -f logstash-mysql-es.conf
或者
bin/logstash -f logstash-mysql-es.conf
logstash这个东西启动的比较慢,一会冒出来一大堆域名转让平台字符串就是启动成功了
之后会每分钟刷新数据库
往数据库里插入两条数据以后,可以发现ES同步更新了
由于之前在Logstash配置文件中,output部分既配置了输出到ES,同时也输出到控制台。所以当检测到MySQL中有更新时,数据会输出到控制台中,如下图:
在服务器中执行命令检查ES服务中的索引是否被创建。执行以下命令:
curl 'localhost:9200/_cat/indices?v'
显示索引被创建了
然后字段查询call_id为xxxx的东西
curl -u elastic -XGET 'localhost:9200/dialogs/_search?q=call_id:1526895885-273269&pretty'
- index - 索引名
- q - 查询指定匹配 使用Lucene查询语法
- from_ - 查询起始点 默认0
- doc_type - 文档类型
- size - 指定查询条数 默认10
- field - 指定字段 逗号分隔
- sort - 排序 字段:asc/desc
- body - 使用Query DSL
- scroll - 滚动查询
- took是耗时,毫秒单位
- time_out 是否超时
- total 分片
- hits下面
- total:结果总数
- max_score:相似度
- id:文档唯一标识
至此,MySQL中的数据已经被成功索引到Elasticsearch,并也可以被准实时的检索到