一、安装和下载
es官网
下载地址
官方介绍:Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。(我们的存储库当然是 Elasticsearch。)
下载和ES一样的版本(很重要,必须这么做)
解压到指定目录
二、启动与配置
测试启动命令
bin/logstash -e 'input {stdin {}}output { stdout {} }'
1.准备下面内容
可以直接抄作业,自己手写的,亲测可用,暂时定时更新,后续会更新配置信息:
jdbc.conf
input {stdin {}jdbc {# 配置数据库信息jdbc_connection_string => "jdbc:mysql://172.18.8.61:3306/chengqu_eplatform?useunicodetrue&characterEncoding=UTF-8&serverlimezone=Asia/shanghai"# 驱动包jdbc_driver_class =>"com.mysql.cj.jdbc.Driver"# 用户名jdbc_user => "****"# 密码jdbc_password => "****"# 是否需要分页jdbc_paging_enabled => "true"# 分页大小jdbc_page_size => "50000"# 时区jdbc_default_timezone => "Asia/Shanghai"# 执行 sql 语句文件位置statement_filepath => "/home/local/escolony/logstash-7.4.2/jdbc.sql"# 定时字段 各字段含义(由左至右)分、吋、天、月、年,全部为*默认含义为每分钟都更新schedule => "* * * * *"# 是否将 sql 中 column 名称转小写(是否转驼峰)lowercase_column_names=> false}
}filter {json {source => "message"remove_field => ["message"]}
}output {elasticsearch {# 输出位置hosts => ["127.0.0.1:9200"]# port => "9200"# protocol => "http"# 索引名称index => "shop"# 文档 id%{id}意思是取査询出来的id的值,并将其映射到shop的id字段中# 文档 id,%{goodsId}如果是别名,意思是取查询出来的goodsId的值,并将其映射到shop的 id字段中document_id => "%{id}"# cluster => "logstash-elasticsearch"}stdout {codec => json_lines}
}
jdbc.sql
select * from goods
把准备好的mysql驱动包放到/logstash-7.4.2/logstash-core/lib/jars/,另外两个文件放到/logstash-7.4.2/下面
执行之前,测试启动(加-t),检查配置文件是否编写正确(注意中英文,大小写,空格啥的,配置文件要求很高,不能出错)
bin/logstash -f /home/local/escolony/logstash-7.4.2/jdbc.conf -t
2.创建新的索引
curl -X PUT http://localhost:9200/shop -H 'Content-Type:application/json' -d'{"settings": {"number_of_shards": 5,"number_of_replicas": 1}
}'
3.分词
curl -XPOST http://localhost:9200/shop/_mapping -H 'Content-Type:application/json' -d'{"properties":{"t_name":{"type": "text","analyzer":"ik_max_word","search_analyzer":"ik_max_word"}}
}'
三、关联mysql导入数据
1.连接mysql导数据
测试成功后,建立索引完成(也可以先建),现在就可以从mysql里面导数据了
实际使用中,一般打开了logstash以后就不要动了,每分钟会去数据库取数据,除非你的sql语句发生变化,不然开着不用管就行
启动logstash
bin/logstash -f /home/local/escolony/logstash-7.4.2/jdbc.conf
获取数据成功
刷新下索引,就有了
写在最后
注意配置文件,要求很高,不能出错,需要的命令我都粘上面了,后续会改为实时更新
下一节开始用代码操作ES