Logstash使用template模板同步數據庫(Oracle)數據到Elasticsearch中

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 遇到的坑

  1. 無法加載Oracle JDBC驅動:
    1.  jdbc_driver_library = "/data/elasticsearch/logstash/ojdbc8.jar" 指定jdbc jar包具體目錄路徑有誤;
    2. 1方法無法解決時將驅動包放至logstash-core/lib/jars/目錄下,指定目錄置空 jdbc_driver_library = ""

1.9 其它未盡事宜請查看以下參考文章或自行查閱資料

2.0 參考文章:

  1. logstash同步數據庫數據到ES中
  2. ElasticSearch作爲搜索引擎-Oracle數據同步
  3. logstash採集規範與elasticsearch的template 、mapping 詳細介紹
  4. ElasticSearch使用中遇到的坑

特別感謝以上文章博主提供的資料,敬上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章