今天總結一下如何使用logstash將Oracle數據導入到Elasticsearch,然後後面會分享怎麼在KONGA中配置API接口給用戶。
首先要安裝好Logstash並且在服務端安裝好Elasticsearch!!然後開始操作:
1、進入logstash路徑
logstash路徑:
configs:裏面存放配置文件。
libs:存放可能需要使用的jar包。
sql:存放sql文件
2、進入sql路徑下,創建sql並編輯
cd ./sql
vim GXJX_KCSJLB.sql
通篇我講其中一個具體的例子,某高校的課程數據類數據(GXJX_KCSJLB):
在這個GXJX_KCSJLB.sql文件中輸入我們的查詢數據指令:
select 'gxjx_kcsjlb' as es_index,ROWNUM,KCH,KCMC,KCYWMC,XF,ZHXS,ZXS,LLXS,SYXS,KCJJ,JC,CKSM,KCFZRH,KCKSDWH,SJXS,KCJXDG,KCJBM,KCLBM,KCLXM,SFTK,TKRQSJ,KSRQSJ,ZHGXSJ,SCBZ,KCXZ,KKBMDM from GXJX_KCSJLB;
注意:
- 我們定義的 es_index 會在configs文件中配置爲es的索引,不能使用大寫字母,否則會導致不能識別。
- 注意如果是從Oracle數據庫中使用數據,可以加上ROWNUM這個屬性。在config配置中與 document_id 對應。sql指令後面可以不帶封號。
3、進入configs路徑下,創建config文件並編輯
cd ./configs
vim GXJX_KCSJLB.config
GXJX_KCSJLB.config 配置文件內容:
input {
jdbc {
jdbc_driver_library => "/home/logstash/libs/ojdbc6-11.1.0.6.0.jar"
jdbc_driver_class => "Java::oracle.jdbc.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@192.168.99.19:1521:jcxydb"
jdbc_user => "sjbzk"
jdbc_password => "sjbzk"
schedule => "* * * * *"
statement_filepath => "/home/logstash/sql/GXJX_KCSJLB.sql"
}
}
filter {
#以下grok和date添加了時區信息,解決後續創建index時的時區差8個區的問題
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => [ "192.168.102.17:9200","192.168.102.18:9200","192.168.102.19:9200" ]
index => "%{es_index}_index"
document_type => "doc"
document_id => "%{kch}"
}
}
注意:
- schedule中的值意思是一分鐘執行一次。
- statement_filepath中填寫我們之前創建好對應的sql路徑。
- index => "%{es_index}_index"中“es_index”是之前在sql文件中定義新增的列,作爲這裏的索引,具體效果如下圖。
- document_id => "%{kch}"中的kch雖然表中是大寫,但是這裏要轉爲小寫,不然不能識別。
索引信息:
4、在configs路徑下創建vr_edition_config文件夾
爲了更好的傳輸數據,在configs路徑下創建vr_edition_config文件夾,然後將我們剛剛創建的config放到這個路徑下:
5、修改logstash的配置文件
vim /etc/logstash/pipelines.yml
添加內容:
pipeline.id: vr_edit
pipeline.workers: 1
pipeline.batch.size: 1
path.config: "/home/logstash/configs/vr_edition_config/*.config"
這裏配置path.config,將配置路徑指向我們存放config的位置。
6、重新啓動logstash並查看運行日誌
先將logstash關閉,時間可能比較長,耐心等待:
service logstash stop
重新啓動:
service logstash start
其中如圖有錯誤或者問題可以查看logstash的運行日誌:
tail -f /var/log/logstash/logstash-plain.log
然後可以打開 http://192.168.102.17:9200/_plugin/head/ 中的Elasticsearch查看到剛剛導入的數據:
可以通過基本查詢查看裏面詳細的信息:
爲後面使用KONGA通過API訪問返回數據做好前提工作。