使用logstash将mysql数据导入到elasticsearch过程:
1 安装elasticsearch 网址:https://www.elastic.co/downloads/elasticsearch,以下所有过程在win环境下。
2 解压启动,在win环境下进入bin目录,双击elasticsearch.bat启动,输入localhost:9200可以看到如下信息:
3 安装elasticsearch-head-master插件 https://github.com/mobz/elasticsearch-head :
在此之前需要安装node.js 然后执行npm install -g grunt-cli
4修改elasticsearch下elasticsearch.yml:
network.host: 0.0.0.0
http.port: 9200
# 解决elasticsearch-head 集群健康值: 未连接问题
http.cors.enabled: true
http.cors.allow-origin: "*"
5 启动elasticsearch-head-master可以见到如下界面:
6安装logstash https://www.elastic.co/cn/downloads/past-releases/logstash-6-2-4
7 接下来是通过logstash将mysql表中数据导入到elasticsearch
进入logstash安装目录下的bin路径,新建sql文件(student.sql)用于存放执行的sql语句,
再新建data.conf文件:
input {
jdbc {
# 数据库驱动路径
jdbc_driver_library => "D:/MavenRepository/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar"
# 驱动名称
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 数据库的连接字符串
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC"
# 数据库用户名
jdbc_user => "root"
# 数据库密码
jdbc_password => "a"
# 重复执行导入任务的时间间隔 分-时-日-月-星期
schedule => "* * * * *"
# 导入的表(查询SQL,可以过滤数据)
jdbc_paging_enabled => "true"
jdbc_page_size => "1000"
statement_filepath => "./student.sql"
# 默认时区
jdbc_default_timezone => "Asia/Shanghai"
}
}
output {
elasticsearch {
# es地址
hosts => "127.0.0.1:9200"
# 索引名称
index => "test"
# 索引类型
document_type => "student"
# 类似主键,es中id对应数据库的字段
document_id => "%{id}"
}
}
8 进入bin路径下,执行logstash -f data.conf便可以将数据同步到elasticsearch
9 此时访问localhost:9200可以看到文档:
删除全部文档:
Post /索引名/类型名/_delete_by_query?conflicts=proceed