目錄
引言
最近在做Mysql同步數據到ES中實現快速搜索,上網尋找了一些,主要有銘毅天下的logstash-input-jdbc實現mysql 與elasticsearch實時同步深入詳解
講述了ES通過Logstash的logstash-input-jdbc插件實現同步數據到ES中,實測在Logstash1.x中可行,由於在Logstash5.x中更換了配置,故此記錄ES5.5與Logstash5.5實現數據同步。
1安裝Logstash與logstash-input-jdbc插件
1.1安裝Logstash5.5
Logstash5.5下載
Linux直接下載TAR壓縮包,解壓至安裝目錄,博主至/opt下
1.2安裝logstash-input-jdbc插件
具體安裝過程見 利用logstash的logstash-input-jdbc插件實現mysql增量導入ES的介紹
在更改到淘寶源後,因爲Logstash5.5的Plugin安裝不同於Logstash1.x,這裏是Logstash5.5的安裝
cd /opt/logstash-5.5.1/bin/
./logstash-plugin install logstash-input-jdbc
2實現Mysql數據到ES同步
2.1Mysql數據準備
數據庫名:course
表名:live_room
表中有如下數據:
2.2編寫sync.conf
#sync.conf如下
input {
stdin {
}
jdbc {
# mysql jdbc connection string to databse
jdbc_connection_string => "jdbc:mysql://localhost:3306/course?useSSL=false"
# the user we wish to excute our statement as
jdbc_user => "you use name"
jdbc_password => "you passwd"
record_last_run => "true"
use_column_value => "true"
tracking_column => "id"
last_run_metadata_path => "/home/test/info"
clean_run => "false"
# the path to you downloaded jdbc driver
jdbc_driver_library => "/home/test/tools/mysql-connector-java-5.1.43-bin.jar"
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
# jdbc_paging_enabled => "true"
jdbc_page_size => "500"
statement => "SELECT * from live_room"
#定時字段 各字段含義(由左至右)分、時、天、月、年,全部爲*默認含義爲每分鐘都更新
# schedule => "* * * * *"
#設定ES索引類型
type => "live_room"
}
}
output {
elasticsearch {
#ESIP地址與端口
hosts => "localhost:9200"
#ES索引名稱(自己定義的)
index => "course"
#document_type => "live_room"
#自增ID編號
document_id => "%{id}"
}
}
備註:
jdbc_connection_string => “填寫自己的數據庫地址”
record_last_run => “true”是否在last_run_metadata_path中保存狀態
use_column_value => “true”使用增量列值而不是時間戳
tracking_column => “id”如果跟蹤列值而不是時間戳,則要跟蹤其值的列
last_run_metadata_path => “/home/test/info”上次運行時間的文件路徑
clean_run => “false”是否應保留以前的運行狀態
jdbc_driver_library => “/home/test/tools/mysql-connector-java-5.1.43-bin.jar”
mysql-connector-java-5.1.43-bin.jar自行下載放到目錄下。
jdbc_page_size => “500”JDBC頁面大小
將sync.conf放置到你需要的目錄下
進入logstash5.5的目錄
cd /opt/logstash-5.5.1/bin/
./logstash -f 放置sync.conf的目錄
2.3測試
如圖,可見數據已經傳入ES。
3結語
本人初學ES,記錄過程給像我一樣學習的人,也方便查詢,若過程有誤,歡迎指正。