Elasticsearch + head + 資料庫同步資料(本例子為mysql)
希望通過這篇文章,減少你的時間,願同你一起修行,任重而道遠!
先來看看最終效果:
第一.安裝:Elasticsearch
- 安裝之前檢查***jdk***是否安裝:
cmd 輸入命令 java -version
2. 下載:Elasticsearch https://www.elastic.co/downloads/elasticsearch 本例子版本Elasticsearch6.1.4.zip
下載完解壓即可:直接雙擊/bin/ElasticSearch.bat
瀏覽器輸入:http://127.0.0.1:9200 檢視效果
修改一下config/elasticsearch.yml配置檔案:(方便之後使用),修改後重啟效果
** 第二.下載node.js ** (head需要從node.js安裝)
1、Windows 安裝包(.msi)
32 位安裝包下載地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86.msi
64 位安裝包下載地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x64.msi
安裝教程:https://www.runoob.com/nodejs/nodejs-install-setup.html
檢視node.js是否生效:
cmd 輸入 node -v
顯示出資訊:
安裝grunt 【head外掛就是通過grunt啟動】
到安裝node.js的目錄下,輸入欄中輸入cmd即可進入cmd命令操作符介面:
cmd 輸入 npm install -g grunt-cli
之後:檢視是否安裝成功,出現版本就表示成功了
cmd 輸入 grunt -version
第三.下載head
點選下載:https://github.com/mobz/elasticsearch-head/archive/master.zip 解壓zip
修改檔案:
找到connect,複製下面de資料替換原始資料 connect: { server: { options: { port: 9100, base: '.', hostname: '*', keepalive: true } } }
同樣輸入框:cmd 到該目錄
輸入命令 npm install 回車執行
然後:
輸入 npm run start 啟動服務
瀏覽器中輸入:http://localhost:9100 檢視現象
好了現在head 安裝,已經成功了!!
第四.下載 logstash-6.1.4 (注意版本對應Elasticsearch6.1.4)
下載連結:https://www.elastic.co/fr/downloads/logstash 在 past releases.找到logstash-6.1.4.zip 解壓
進入bin目錄中建立:一個bin資料夾(本例子為bin,命名隨意),jdbc.sql,logstash.conf檔案
-
bin 資料夾放資料庫連線包:https://pan.baidu.com/s/1eBLmgQDmyfB7fCkL97zz1A 密碼:f12b
-
jdbc.sql 檔案放入下面sql語句:
SELECT id,birthday,sex,address from user
- logstash.conf
input {
stdin {
}
jdbc {
# mysql 資料庫連結,mybatis為資料庫名
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/mybatis"
# 使用者名稱和密碼
jdbc_user => "root"
jdbc_password => "123456"
# 驅動 修改為mysql連線包位置
jdbc_driver_library => "D:/chromeDownload/elasticsearch-6.1.4-log-mysql/logstash-6.1.4/bin/bin/mysql-connector-java-5.1.7-bin.jar"
# 驅動類名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 執行的sql 檔案路徑+名稱
statement_filepath => "jdbc.sql"
# 設定監聽間隔 各欄位含義(由左至右)分、時、天、月、年,全部為*預設含義為每分鐘都更新
schedule => "* * * * *"
}
}
output {
elasticsearch {
# ES的IP地址及埠
hosts => ["localhost:9200"]
# 索引名稱 可自定義
index => "test"
# 需要關聯的資料庫中有有一個id欄位,對應型別中的id
document_id => "%{id}"
document_type => "test"
}
stdout {
# JSON格式輸出
codec => json_lines
}
}
— [logstash.conf更多配置詳情]:https://yq.aliyun.com/articles/152043
- mysql資料庫中user的資訊:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL COMMENT '使用者名稱稱',
`birthday` date DEFAULT NULL COMMENT '生日',
`sex` char(1) DEFAULT NULL COMMENT '性別',
`address` varchar(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', '王五', '2018-08-28', '2', '上海');
INSERT INTO `user` VALUES ('10', '張三', '2014-07-10', '1', '北京市');
INSERT INTO `user` VALUES ('16', '張小明', '2018-08-16', '1', '河南鄭州');
INSERT INTO `user` VALUES ('22', '陳小明', '2018-08-17', '1', '河南鄭州');
INSERT INTO `user` VALUES ('24', '張三丰', '2018-08-26', '1', '河南鄭州');
INSERT INTO `user` VALUES ('25', '陳小明', '2018-08-14', '1', '河南鄭州');
INSERT INTO `user` VALUES ('26', '王五', '2018-08-28', '1', '北京');
INSERT INTO `user` VALUES ('30', '馬小跳', '2018-08-28', '1', '西安');
第五步.啟動程式
- 啟動elasticsearch-6.1.4
- 啟動elasticsearch-head-master
elasticsearch-head-master 目錄下輸入 npm run start 或者 npm start
3.接下來:
輸入 logstash -f logstash.conf (logstash.conf 檔案建立的路徑+檔名)
顯示出下列資訊的話,成功!!
瀏覽器中再次輸入:http://localhost:9100
顯示出資料
Elasticsearch + head + mysql同步資料到這裡就結束了!至於怎麼結合到專案中做**“全文搜尋這種功能”**,繼續探索吧!
留言區等你!