• logstash 7.9.0同步多张表到elasticsearch


    input {
          stdin {
           }
          jdbc {
            type => "user"
            # 连接的数据库地址和哪一个数据库,指定编码格式,禁用SSL协议,设定自动重连
            jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/userdb?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull"
            jdbc_user => "user"
            jdbc_password => "password"
            # 下载连接数据库的驱动包,建议使用绝对地址
           jdbc_driver_library => "/u02/mysql-connector-java-8.0.20/mysql-connector-java-8.0.20.jar"
    
           jdbc_driver_class => "com.mysql.jdbc.Driver"
           jdbc_paging_enabled => "true"
           jdbc_page_size => "50000"
           codec => plain { charset => "UTF-8"}
    
            #使用其它字段追踪,而不是用时间
          #use_column_value => true   //这里如果是用时间追踪比如:数据的更新时间或创建时间等和时间有关的这里一定不能是true, 切记切记切记,我是用update_time来追踪的
            #追踪的字段
         tracking_column => modify_time
         record_last_run => true
         #上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值  这里说是必须指定初始值,我没指定默认是1970-01-01 08:00:00
         last_run_metadata_path => "/u02/logstash-7.6.2/bin/user_last_id" 
    
          jdbc_default_timezone => "Asia/Shanghai" 
          statement => "SELECT * FROM user WHERE modify_time > :sql_last_value"  
    
         #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录 第一次可开启
         clean_run => true   
    
           # 这是控制定时的,重复执行导入任务的时间间隔,第一位是分钟 不设置就是1分钟执行一次
           schedule => "* * * * *"
         }
    	 
          jdbc {
            type => "dept"
            jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/userdb?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull"
            jdbc_user => "user"
            jdbc_password => "password"
           jdbc_driver_library => "/u02/mysql-connector-java-8.0.20/mysql-connector-java-8.0.20.jar"
           jdbc_driver_class => "com.mysql.jdbc.Driver"
           jdbc_paging_enabled => "true"
           jdbc_page_size => "50000"
           codec => plain { charset => "UTF-8"}
    
         tracking_column => modify_time
         record_last_run => true
         last_run_metadata_path => "/u02/logstash-7.6.2/bin/dept_last_id" 
    
          jdbc_default_timezone => "Asia/Shanghai"
          # 如果表中有type字段只能写出所有需要字段并给type取别名 否则会同步失败
          statement_filepath => "/u02/logstash-7.6.2/bin/jdbc.sql"
    
         #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录 第一次可开启
         clean_run => true
    
           # 这是控制定时的,重复执行导入任务的时间间隔,第一位是分钟 不设置就是1分钟执行一次
           schedule => "* * * * *"
         }	 
     }
    
     filter {
        json {
            source => "message"
            remove_field => ["message"]
        }
    }
    
    output {
    if [type]=="user" {
        elasticsearch {
            # 要导入到的Elasticsearch所在的主机
            hosts => "127.0.0.1:9200"
            # 要导入到的Elasticsearch的索引的名称
            index => "user"
            # 主键名称(类似数据库主键)
            document_id => "%{id}"
        }
    	
        stdout {
            # JSON格式输出
            codec => json_lines
        }	
    }
    
    if [type]=="dept" {
        elasticsearch {
            # 要导入到的Elasticsearch所在的主机
            hosts => "127.0.0.1:9200"
            # 要导入到的Elasticsearch的索引的名称
            index => "dept"
            # 主键名称(类似数据库主键)
            document_id => "%{id}"
        }
    	
        stdout {
            # JSON格式输出
            codec => json_lines
        }	
    }
    }
    

      

  • 相关阅读:
    datagrid
    IntelliJ IDEA for mac 引入js注意事项
    centos7安装并配置svn
    yum使用总结
    安装php
    类视图
    django里面添加静态变量
    Ubuntu16.04安装&创建虚拟环境
    制作dockerfile, 天眼查的镜像、并运行
    dockerfile
  • 原文地址:https://www.cnblogs.com/agasha/p/14448368.html
Copyright © 2020-2023  润新知