专栏名称: 舍是境界
目录
相关文章推荐
锦缎  ·  小细胞肺癌,长夜渐明 ·  3 天前  
今天看啥  ›  专栏  ›  舍是境界

74 - 利用JDBC插件导入数据到ES

舍是境界  · 简书  ·  · 2021-05-02 08:25

文章预览

同步数据库数据到Elasticsearch

  • 需求:将数据库中的数据同步到ES,借助ES的全文检索,提高搜索速度
    • 需要把新增用户信息同步到Elasticsearch中
    • 用户信息Update后,需要能被更新到Elasticsearch
    • 支持增量更新
    • 用户注销后,不能被ES所搜索到

JDBC Input Plugin & 设计实现思路

  • 支持通过JDBC Input Plugin将数据从数据库读到Logstash
    • 需要自己提供所需的JDBC Driver
  • 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
  }
}
………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览