1、LogStash
1.1下載Logstash
Wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.tar.gz
1.2項目結構
解壓縮後項目結構爲:
項目結構
其中我們需要手動添加oracle的jar包作爲logstash的驅動。
1.3新增配置文件 logstash-test.conf
作用是:每秒增量更新,每分鐘進行一次全量更新
刪除的話,目前logstash沒有策略實現。不過我們可以通過代碼實現。比如說每隔一段時間,更換一次index。刪除舊index,從而實現另類的刪除同步。
input {
jdbc {//每秒更新新增數據
jdbc_driver_library => "/data/elasticsearch/logstash/ojdbc8.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@192.168.54.15:1521:ORCL"
jdbc_user => "oracle"
jdbc_password => "oracle"
schedule => "* * * * * *"
statement_filepath => "/data/elasticsearch/logstash/sql/test_oracle.sql"
record_last_run => true
tracking_column => id
codec => plain { charset => "UTF-8"}
tracking_column_type => numeric
last_run_metadata_path => "/data/elasticsearch/logstash/metadata-path/test_oracle_last_id"
clean_run => "false"
jdbc_paging_enabled => true
jdbc_page_size => 10000
}
}
filter {
}
output {
elasticsearch {
hosts => ["192.168.54.11:9200"]
index => "test_oracle"
document_type => "_doc"
document_id => "%{id}"
template_overwrite => true
template => "/data/elasticsearch/logstash/template/test_template.json"
}
}
1.4 sql語句示例 SQL腳本:test_oracle.sql
select id,goods_name,goods_no,price,account_id,create_time,update_time from goods where update_time > :sql_last_value + numtodsinterval(8,'hour')
因我們所處時區爲東8區,需將最後執行時間增加8小時
1.5 設置模板,爲SQL返回字段設定索引規則
1.5.1 配置文件中增加使用模板,並指定具體模板
template_overwrite => true
template => "/data/elasticsearch/logstash/template/test_template.json"
1.5.2 建立模板 test_template.json
template 示例:logstash採集規範與elasticsearch的template 、mapping 詳細介紹
1.6 啓動, 命名行切換到ES安裝目錄執行以下命令:
bin/logstash-f ../config/logstash-test.conf
1.7 查看結果
進入Head 或者Kibana 即可看到SQL腳本查詢的數據同步只ES中
1.8 遇到的坑
- 無法加載Oracle JDBC驅動:
- jdbc_driver_library = "/data/elasticsearch/logstash/ojdbc8.jar" 指定jdbc jar包具體目錄路徑有誤;
- 1方法無法解決時將驅動包放至logstash-core/lib/jars/目錄下,指定目錄置空 jdbc_driver_library = ""
1.9 其它未盡事宜請查看以下參考文章或自行查閱資料
2.0 參考文章:
- logstash同步數據庫數據到ES中
- ElasticSearch作爲搜索引擎-Oracle數據同步
- logstash採集規範與elasticsearch的template 、mapping 詳細介紹
- ElasticSearch使用中遇到的坑
特別感謝以上文章博主提供的資料,敬上