logstash将各种数据库数据批量自动导入ES数据库

input {
        stdin {}
        
        jdbc {
                type => "dbms_data_catalog"
                jdbc_connection_string => "jdbc:postgresql://192.9.30.42:5432/resourceregister_cp"
                # 数据库连接账号密码;
                jdbc_user => "postgres"
                jdbc_password => "postgres"
                # MySQL依赖包路径;
                jdbc_driver_library => "D:\DLSP\platform\webapps\ElasticSearch\logstash-7.13.3\bin\databaseDriverJar\postgresql-42.2.23.jar"
                # the name of the driver class for mysql
                jdbc_driver_class => "org.postgresql.Driver"
                #是否开启分页
                jdbc_paging_enabled => "true"
                #分页条数
                jdbc_page_size => "50000"
                # 执行的sql 文件路径+名称
                #statement_filepath => "/data/my_sql2.sql"
                #SQL语句,也可以使用statement_filepath来指定想要执行的SQL
                #statement => "SELECT * FROM `user` where id > :sql_last_value"
                statement => "select 
                                '数据服务资源>现状数据' as moudle_path , 
                                'dbms_data_catalog' as resource_table , 
                                catalogid,
                                catalogname,
                                catalogcode,
                                nodetype::text,
                                catalogtype::text,
                                description,
                                display_order::text,
                                create_time::text,
                                status::text,
                                parentid,
                                catalogorganization,
                                catalog_url 
                            from dbms_data_catalog"
                #每一分钟做一次同步
                schedule => "* * * * *"
                #是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false)
                lowercase_column_names => true
                # 是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中;
                record_last_run => true
                # 需要记录查询结果某字段的值时,此字段为true,否则默认tracking_column为timestamp的值;
                use_column_value => true
                # 需要记录的字段,用于增量同步,需是数据库字段
                tracking_column => "catalogid"
                # record_last_run上次数据存放位置;
                last_run_metadata_path => "D:\DLSP\platform\webapps\ElasticSearch\logstash-7.13.3\sql_last_value"
                #是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false)
                clean_run => false
        }
        jdbc {
                type => "dbms_data_bigdata"
                jdbc_connection_string => "jdbc:postgresql://192.9.30.42:5432/resourceregister_cp"
                # 数据库连接账号密码;
                jdbc_user => "postgres"
                jdbc_password => "postgres"
                # MySQL依赖包路径;
                jdbc_driver_library => "D:\DLSP\platform\webapps\ElasticSearch\logstash-7.13.3\bin\databaseDriverJar\postgresql-42.2.23.jar"
                # the name of the driver class for mysql
                jdbc_driver_class => "org.postgresql.Driver"
                #是否开启分页
                jdbc_paging_enabled => "true"
                #分页条数
                jdbc_page_size => "50000"
                # 执行的sql 文件路径+名称
                #statement_filepath => "/data/my_sql2.sql"
                #SQL语句,也可以使用statement_filepath来指定想要执行的SQL
                #statement => "SELECT * FROM `user` where id > :sql_last_value"
                statement => "select 
                                '数据服务资源>现状数据' as moudle_path , 
                                'dbms_data_bigdata' as resource_table , 
                                id,
                                name,
                                alias,
                                parentid,
                                connectionid,
                                regist_type::text,
                                url,
                                register,
                                regist_date::text,
                                remark,
                                job_status,
                                job_id  
                            from dbms_data_bigdata"
                #每一分钟做一次同步
                schedule => "* * * * *"
                #是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false)
                lowercase_column_names => true
                # 是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中;
                record_last_run => true
                # 需要记录查询结果某字段的值时,此字段为true,否则默认tracking_column为timestamp的值;
                use_column_value => true
                # 需要记录的字段,用于增量同步,需是数据库字段
                tracking_column => "id"
                # record_last_run上次数据存放位置;
                last_run_metadata_path => "D:\DLSP\platform\webapps\ElasticSearch\logstash-7.13.3\sql_last_value"
                #是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false)
                clean_run => false
        }
}
 
filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
    mutate  {
        remove_field => ["@timestamp","@version"]
    }
}
 
output {
        if [type] == "dbms_data_bigdata" {
            elasticsearch {
                     # 配置ES集群地址
                    hosts => ["192.9.30.195:9200"]
                     # 索引名字,必须小写
                    index => "dbms_data"
                    #数据唯一索引(建议使用数据库KeyID)
                    document_id => "%{id}"
            }
        }else if [type] == "dbms_data_catalog" {
            elasticsearch {
                     # 配置ES集群地址
                    hosts => ["192.9.30.195:9200"]
                     # 索引名字,必须小写
                    index => "dbms_data"
                    #数据唯一索引(建议使用数据库KeyID)
                    document_id => "%{catalogid}"
            }
        }

        stdout {
             codec => json_lines
        }


}
posted @   Ideaway  阅读(692)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示