唉,生活所迫生活所迫,我又搞這些雜七雜八的啦,不記錄一下也白瞎啦。這篇主要講怎么把數(shù)據(jù)庫(kù)里的數(shù)據(jù)直接導(dǎo)入到elastic search。參考的比較多的是這篇,寫的非常好,可是我在實(shí)際操作的時(shí)候還是遇到了一些問題,所以自己寫一個(gè)。寫作的邏輯呢,就是怎么配置并且使用的全過程。
??首先了解一下,logstash的主要工作原理是在配置文件中定義一個(gè)管道,用這個(gè)管道就可以完成全過程。因此你需要做的事情其實(shí)只有三步:
- 把logstash下載下來解壓好,把mysql 對(duì)應(yīng)版本的connector下載好
- 寫配置文件
- 運(yùn)行配置文件
1.運(yùn)行elastic search 和 kibana
??怎么安裝的我就不講啦,剛?cè)腴T的娃娃應(yīng)該也不會(huì)看這種文章。我的環(huán)境呢是windows,直接到es的Bin目錄下啟動(dòng)elasticsearch.bat文件就可以,啟動(dòng)之后在瀏覽器中輸入localhost:9200如果有返回值說明啟動(dòng)成功了。kibana呢是方便查看結(jié)果的,用不用都行吧,反正我用了。
2. 配置logstash
??logstash是elastic search官方開發(fā)的用于整合數(shù)據(jù)的一個(gè)工具,它可以整合日志以及來自文件的兩大類數(shù)據(jù)。整合日志的那個(gè)呢,官方教程里有我這里也就不細(xì)說了。我們今天要講的是整合文件的數(shù)據(jù),在這里其實(shí)是整合的數(shù)據(jù)庫(kù)的數(shù)據(jù)。
??配置文件就是我下面給出的,這個(gè)配置文件直接放在logstash的根目錄下就行,命名為`。里面有個(gè)坑:注意觀察數(shù)據(jù)庫(kù)連接字符串,里面多了一個(gè)時(shí)區(qū)參數(shù)的定義,在這里我們一定要留心,否則會(huì)報(bào)錯(cuò)。還有個(gè)坑,如果數(shù)據(jù)庫(kù)里有date類型的話,就不要在定義索引的時(shí)候定義date的格式,直接用默認(rèn)就行啦,不然又是報(bào)錯(cuò)。
input {
jdbc {
# 數(shù)據(jù)庫(kù)驅(qū)動(dòng)路徑
jdbc_driver_library => "D:/elasticsearch/logstash-6.5.3/mysql-connector-java-8.0.12.jar"
# 驅(qū)動(dòng)名稱
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 數(shù)據(jù)庫(kù)的連接字符串
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test_db?serverTimezone=UTC"
# 數(shù)據(jù)庫(kù)用戶名
jdbc_user => "root"
# 數(shù)據(jù)庫(kù)密碼
jdbc_password => "123456"
# 重復(fù)執(zhí)行導(dǎo)入任務(wù)的時(shí)間間隔 分-時(shí)-日-月-星期
schedule => "* * * * *"
# 導(dǎo)入的表(查詢SQL,可以過濾數(shù)據(jù))
statement => "SELECT *from articles"
# 默認(rèn)時(shí)區(qū)
jdbc_default_timezone => "Asia/Shanghai"
}
}
output {
elasticsearch {
# es地址
hosts => "127.0.0.1:9200"
# 索引名稱
index => "articles"
# 索引類型
document_type => "_doc"
# 類似主鍵,es中id對(duì)應(yīng)數(shù)據(jù)庫(kù)的字段
document_id => "%{aid}"
}
stdout {
codec => plain { charset => "UTF-8"}
}
}
3.下載mysql connector
??connector是程序用來連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng),可以去mysql的官網(wǎng)下載,但是現(xiàn)在居然還要注冊(cè)啦,而且注冊(cè)登陸都挺費(fèi)勁的。不過好在可以直接去遠(yuǎn)程maven庫(kù)中下載,什么版本的都有。
4.運(yùn)行l(wèi)ogstash
運(yùn)行bin目錄下的logstash腳本(我是用mingwin運(yùn)行的),命令為logstash -f ../jdbc.cnf就跑起來啦。