docker安装logstash后
mkdir -p /usr/logstash/config-dir
cd /usr/logstash/config-dir、
vi logstash.conf
在文本编辑器编辑好配置文件并辅助到logstash.conf
参考配置:
input{
jdbc{
#the path to our downloaded jdbcdriver(上传自己对应的版本)
jdbc_driver_library=>"/config-dir/mysql-connector-java-5.1.46.jar"
#the name of the driver class for mysql
jdbc_driver_class=>"com.mysql.jdbc.Driver"
#mysql jdbc connection string to our backup database
jdbc_connection_string=>"jdbc:mysql://ip:3306/数据库?characterEncoding=UTF8"
#the user we wish to excute our statement as
jdbc_user=>"root"
#password
jdbc_password=>"****"
jdbc_paging_enabled=>"true"
jdbc_page_size=>"50000"
#默认时区
#jdbc_default_timezone => "Asia/Shanghai"
#需同步的数据执行的SQL
statement=>""select 需求字段 from 表""
#需同步的数据执行的SQL文件路径
#statement_filepath => "/usr/local/logstash/bin/logstash_jdbc_test/jdbc_oracle.sql"
#定时字段各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule=>"* * * * *"
#字段名使用大写还是小写,默认true,使用小写,如果改成false,则使用大写
lowercase_column_names =>"false"
#添加自定义字段
add_field => { "[@metadata][type]" => "e-commerce" }
}
jdbc{
#the path to our downloaded jdbcdriver
jdbc_driver_library=>"/config-dir/mysql-connector-java-5.1.46.jar"
#the name of the driver class for mysql
jdbc_driver_class=>"com.mysql.jdbc.Driver"
#mysql jdbc connection string to our backup database
jdbc_connection_string=>"jdbc:mysql://ip:3306/数据库?characterEncoding=UTF8"
#the user we wish to excute our statement as
jdbc_user=>"root"
#password
jdbc_password=>"****"
jdbc_paging_enabled=>"true"
jdbc_page_size=>"50000"
#默认时区
#jdbc_default_timezone => "Asia/Shanghai"
#需同步的数据执行的SQL
statement=>"select 需求字段 from 表"
#需同步的数据执行的SQL文件路径
#statement_filepath => "/usr/local/logstash/bin/logstash_jdbc_test/jdbc_oracle.sql"
#定时字段各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule=>"* * * * *"
#字段名使用大写还是小写,默认true,使用小写,如果改成false,则使用大写
lowercase_column_names =>"false"
#添加自定义字段
add_field => { "[@metadata][type]" => "education" }
}
}
output{
if [@metadata][type] == "e-commerce" {
#将结果输出到es中
elasticsearch{
#ES IP地址与端口
hosts=>"esip:9200"
#ES索引名称(自己定义的)
index=>"ec"
#使用哪个字段的值作为_id编号,如果不指定,则_id的值随机生成
document_id=>"%{id}"
#文档类型
document_type=>"product"
}
}else if [@metadata][type] == "education"{
#将结果输出到es中
elasticsearch{
#ES IP地址与端口
hosts=>"esip:9200"
#ES索引名称(自己定义的)
index=>"education"
#使用哪个字段的值作为_id编号,如果不指定,则_id的值随机生成
document_id=>"%{id}"
#文档类型
document_type=>"education"
}
}
}
创建容器:
docker run -id -v /usr/logstash/config-dir:/config-dir logstash:5.6.11 -f /config-dir/logstash.conf
即可等待mysql数据同步到elasticsearch
踩坑:要先运行自己的搜索服务,或先部署运行这个服务的jar包,让pojo对应的索引和filed字段在elasticsearch创建好,然后再运行logstash,不然会报字段不对应的错误。