ElasticSearch与Mysql
1. logstash的安装
首先在官网下载logstash
下载地址(logstash:https://www.elastic.co/downloads/logstash
注意:下载的logstash版本要和elasticsearch一致
下载好后,解压,打开就能使用了:
2. logstash的配置
在安装完成logstash之后,我们就需要配置对应的数据库信息了(mysql
① 在解压的logstash里面创建一个mysql文件夹(名字随便起的
②下载对应的mysql-connector-java-8.0.13.jar包,并放入mysql文件夹里面
下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.13
③ 写一个find.sql文件,(复制配置需要写入的数据库信息
里面的内容只有一行
//user 为需要导入的表
select * from user
④同样再mysql文件夹里面,写一个conf文件(jdbc.conf)
赋值在里面写对应的配置信息:
注意:这个配置文件的格式保存的时候必须是:CONF文件,不然可能会报错
input {
stdin {
}
jdbc {
# mysql 数据库链接,center为数据库名,jdbc版本比较大的要加上?后面那串字符
jdbc_connection_string => "jdbc:mysql://localhost:3306/数据库名字?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
# 用户名和密码
jdbc_user => "root"
jdbc_password => ""
# 驱动
jdbc_driver_library => "E:\logstash-5.6.8\mysqletc\mysql-connector-java-8.0.13.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 执行的sql 就是上一步创建的sql文件的绝对路径+文件名字
statement_filepath => "F:\elasticsearch\logstash-7.6.2\mysql\find.sql"
# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
# 索引类型
type => "center"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
# ES的IP地址及端口
hosts => ["localhost:9200"]
# 索引名称,elasticsearch叫做索引,在数据库中叫表名
index => "article"
# 自增ID id必须是待查询的数据表的序列字段
document_id => "%{id}"
}
stdout {
# JSON格式输出
codec => json_lines
}
}
完成好之后mysql文件夹里面的内容如下:
第一步 启动elasticsearch.bat文件,打开elasticsearch,运行成功可以看到:
第二步:打开一个新的终端窗口,进入到C:\Windows\System32\cmd.exe目录下
第三步:运行logstash -f …/mysql/jdbc.conf,其中logstash -f 表示运行指令, …/mysql/jdbc.conf表示我们配置的jdbc.conf文件路径,成功启动后,可以在终端中看见运行的sql和同步的数据
第四步:测试是否成功
运行kibana,
输入:
//article 为conf文件里面对应的索引名
GET article
{
"query":{
"match_all": {
}
}
}
可以查询到对应的数据库文件了,数据也全部导入了(每个3秒会刷新数据库文件
其中:timestamp和version是elastisearch自己添加的字段