不要急,总有办法的

logstash 同步上亿数据oracle到elasticsearch

Logstash | 作者 aminemine | 发布于2018年09月10日 | 阅读数:5714


oracle没有自增长id,只能使用rownum,子查询,但是好几亿的数据量同步,数据还在实时变动,唯一的是uuid,有时间戳,但是一批一个,时间戳会重复,如果删除某数据,或者有更新,rownum就不会是原来的那个数字了,如果在子查询里面按照uuid或者时间戳排序,肯定不现实,速度太慢,而且同步到elasticsearch里面,不能用rownum做docid,怎么设置使用uuid来做doc的id?
已邀请:

aminemine

赞同来自:

input {
jdbc {
jdbc_connection_string => ""
jdbc_user => ""
jdbc_password => ""
jdbc_driver_library => "C:/developtools/elasticsearch/driver/ojdbc6.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_page_size => "50000"
statement => "SELECT * FROM(SELECT NP.*, ROWNUM RN FROM (SELECT * FROM TB_WENSHU_P) NP)T_TB_WENSHU_P WHERE T_TB_WENSHU_P.RN > :sql_last_value"
schedule => "* * * * *"
type=> "tb_wenshu_p"
record_last_run => "true"
use_column_value => "true"
tracking_column => "rn"
last_run_metadata_path => "C:/developtools/elasticsearch/driver/last_id.txt"
clean_run => "false"
}
}


output {
elasticsearch {
hosts => [""]
index => "tb_wenshu_p"
document_id => "%{rn}"
user => ""
password => ""
}
stdout{

}
}

要回复问题请先登录注册