文章预览
同步数据库数据到Elasticsearch
-
需求:将数据库中的数据同步到ES,借助ES的全文检索,提高搜索速度
-
需要把新增用户信息同步到Elasticsearch中
-
用户信息Update后,需要能被更新到Elasticsearch
-
支持增量更新
-
用户注销后,不能被ES所搜索到
JDBC Input Plugin & 设计实现思路
-
支持通过JDBC Input Plugin将数据从数据库读到Logstash
-
Scheduling
-
语法来自Rufus-scheduler
-
扩展了Cron,支持时区
-
State
-
Tracking_column / sql_last_value
input {
jdbc {
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/db_example"
jdbc_user => root
jdbc_password => root
#启用追踪,如果为true,则需要指定tracking_column
use_column_value => true
#指定追踪的字段,
tracking_column => "last_updated"
#追踪字段的类型,目前只有数字(numeric)和时间类型(timestamp),默认是数字类型
tracking_column_type => "numeric"
#记录最后一次运行的结果
record_last_run => true
#上面运行结果的保存位置
last_run_metadata_path => "jdbc-position.txt"
statement => "SELECT * FROM user where last_updated >:sql_last_value;"
schedule => " * * * * * *"
}
}
output {
elasticsearch {
document_id => "%{id}"
document_type => "_doc"
index => "users"
hosts => ["http://localhost:9200"]
}
stdout{
codec => rubydebug
}
}
………………………………