个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈
第二周了,今天我们来讲一下Logstash的使用。
首先,我们打开ES,使用postman新建一个索引user,在postman里使用PUT方式向localhost:9200/user发送请求。看到返回信息:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "user"
}
说明索引建立成功了,如果没有建立成功,可能是因为ES没有开启自动创建索引,修改一下config/elasticsearch.yml里的配置,把action.auto_create_index设置为true。重新执行一下上面的操作。
这个时候我们看一下user索引里的数据,在postman里使用get方式,发送localhost:9200/user/_search?q=*&pretty查看user索引下的所有数据。可以看到,在user索引下,并没有任何数据。
我们要读取的表结构为:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`account` varchar(40) DEFAULT NULL,
`password` varchar(40) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`sex` varchar(15) DEFAULT NULL,
`head_src` varchar(40) DEFAULT NULL,
`question` int(11) DEFAULT NULL,
`answer` varchar(100) DEFAULT NULL,
`signature` varchar(40) DEFAULT NULL,
`grade` int(11) DEFAULT NULL,
`code` varchar(100) NOT NULL,
`state` tinyint(1) unsigned zerofill NOT NULL,
`permission` tinyint(1) DEFAULT NULL,
`date` date DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `account` (`account`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 STATS_PERSISTENT=1;
(大学里自己做的系统里的表,注释都没有,技术不过关啊)
接下来,我们进入Logstash文件夹里,新建一个ConnectionJar文件夹,在这个文件夹里放入mysql连接的jar包,可以去Maven仓库里面去下一个,这里我就不放链接了。
然后我们打开Logstash根目录下的bin文件夹,创建conf文件夹,在这个文件夹里,我们创建mysql.conf文件。打开conf文件,设置文件编码为ANSI(非常重要!!非常重要!!非常重要!!)。
配置文件的内容可以这么写:
input {
# 标准输入形式,暂时用不到
stdin {
}
# JDBC设置
jdbc {
# 数据库连接
jdbc_connection_string => "jdbc:mysql://localhost:3306/retina"
jdbc_user => "root"
jdbc_password => "123456"
# Jar包的位置
jdbc_driver_library => "D:\elasticSearch\logstash-7.6.0\ConnectionJar\mysql-connector-java-5.1.40-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 是否使用列数据
use_column_value => true
# 追踪的列,与use_column_value必须同时使用
tracking_column => id
# 是否开启记录最后一次运行数据
record_last_run => true
# 记录数据的保存位置
last_run_metadata_path=>"D:\elasticSearch\logstash-7.6.0\bin\conf\station_parameter.txt"
# 是否开启分页
jdbc_paging_enabled => "true"
# 分页数据大小
jdbc_page_size => "50000"
# SQL语句,也可以使用以下的文件形式
# statement_filepath => "D:\elasticSearch\logstash-7.6.0\bin\conf\information.sql"
statement => "select * from user where id > :sql_last_value "
# 定时执行的时间,这个在我的一篇博客里提到https://my.oschina.net/u/4109273/blog/3042086
schedule => "* * * * *"
# 索引的名称
type => "user"
}
}
# 拦截器设置,本篇中没有用到,就不解释了
filter {}
# 输出配置
output {
elasticsearch {
# ES的地址
hosts => "localhost:9200"
# 使用的索引
index => "user"
# 文档使用的ID列
document_id => "%{id}"
}
}
但是!不能使用上面的配置,会报错的,因为文件里不能出现中文,所有我们要把所有的注释删掉!
但是!不能使用上面的配置,会报错的,因为文件里不能出现中文,所有我们要把所有的注释删掉!
但是!不能使用上面的配置,会报错的,因为文件里不能出现中文,所有我们要把所有的注释删掉!(可用的配置信息我写在最后)
然后我们在bin文件里打开cmd,运行.\logstash -f .\conf\mysql.conf命令。看到这样的截图,就说明Logstash已经在进行数据处理了。
然后我们看一下user索引下的数据,可以看到,数据已经写入了,再对比一下user表的数据,可以看到,所有的user数据已经写入ES了。至此,logstash的基础使用已经可以了。
配置信息:
input {
stdin {
}
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/retina"
jdbc_user => "root"
jdbc_password => "123456"
jdbc_driver_library => "D:\elasticSearch\logstash-7.6.0\JDBC\mysql-connector-java-5.1.40-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
use_column_value => true
tracking_column => id
record_last_run => true
last_run_metadata_path=>"D:\elasticSearch\logstash-7.6.0\bin\conf\station_parameter.txt"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
statement => "select * from user where id > :sql_last_value "
schedule => "* * * * *"
type => "user"
}
}
filter {}
output {
elasticsearch {
hosts => "localhost:9200"
index => "user"
document_id => "%{id}"
}
}
附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读/书籍书单大全:
(点击右侧 即可打开个人博客内有干货):技术干货小栈
=====>>①【Java大牛带你入门到进阶之路】<<====
=====>>②【算法数据结构+acm大牛带你入门到进阶之路】<<===
=====>>③【数据库大牛带你入门到进阶之路】<<=====
=====>>④【Web前端大牛带你入门到进阶之路】<<====
=====>>⑤【机器学习和python大牛带你入门到进阶之路】<<====
=====>>⑥【架构师大牛带你入门到进阶之路】<<=====
=====>>⑦【C++大牛带你入门到进阶之路】<<====
=====>>⑧【ios大牛带你入门到进阶之路】<<====
=====>>⑨【Web安全大牛带你入门到进阶之路】<<=====
=====>>⑩【Linux和操作系统大牛带你入门到进阶之路】<<=====天下没有不劳而获的果实,望各位年轻的朋友,想学技术的朋友,在决心扎入技术道路的路上披荆斩棘,把书弄懂了,再去敲代码,把原理弄懂了,再去实践,将会带给你的人生,你的工作,你的未来一个美梦。