1. 程式人生 > >Elasticsearch + head + 資料庫同步資料(本例子為mysql)

Elasticsearch + head + 資料庫同步資料(本例子為mysql)

希望通過這篇文章,減少你的時間,願同你一起修行,任重而道遠!

先來看看最終效果:
這裡寫圖片描述

第一.安裝:Elasticsearch

  1. 安裝之前檢查***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檔案
這裡寫圖片描述

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', '西安');

第五步.啟動程式

  1. 啟動elasticsearch-6.1.4
    這裡寫圖片描述
  2. 啟動elasticsearch-head-master
elasticsearch-head-master 目錄下輸入  npm run start  或者  npm start

這裡寫圖片描述

3.接下來:
這裡寫圖片描述

輸入  logstash -f logstash.conf   (logstash.conf  檔案建立的路徑+檔名)

這裡寫圖片描述

顯示出下列資訊的話,成功!!

這裡寫圖片描述

瀏覽器中再次輸入:http://localhost:9100
這裡寫圖片描述
顯示出資料
這裡寫圖片描述

Elasticsearch + head + mysql同步資料到這裡就結束了!至於怎麼結合到專案中做**“全文搜尋這種功能”**,繼續探索吧!
留言區等你!