ElasticSearch 是一個分布式、高擴充、高實時的搜尋引擎。它能很友善的使大量資料具有搜尋、分析和探索的能力。充分利用ElasticSearch的水準伸縮性,能使資料在生産環境變得更有價值。ElasticSearch 的實作原理主要分為以下幾個步驟,首先使用者将資料送出到Elastic Search 資料庫中,再通過分詞控制器去将對應的語句分詞,将其權重和分詞結果一并存入資料,當使用者搜尋資料時候,再根據權重将結果排名,打分,再将傳回結果呈現給使用者,本文介紹如果通過Docker進行安裝Elasticsearch單節點和叢集
一、安裝單節點Elasticsearch
1、拉取Elasticsearch
docker pull elasticsearch:6.8.7
2、建立資料卷
主要用于将容器内的資料和主控端進行挂載,避免容器重新開機和挂掉的時候資料丢失
- 建立目錄
# -p是建立多級目錄
mkdir -p /data/es
- 進入剛剛建立的es目錄,建立資料存放目錄和日志存放目錄
# 進入目錄
cd /data/es
# 建立資料目錄和日志目錄
mkdir data log
# 這兩個目錄的使用者權限要與啟動es的使用者相同,否則會出現沒有權限讀取,這裡為了友善直接給開放最大權限
chmod 777 data log
- 建立配置檔案
vim es.yml
- 檔案中加入以下内容
cluster.name: elasticsearch-cluster
node.name: es-node
http.port: 9200
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
3、啟動
docker run -d --name es -p 9200:9200 -p 9300:9300 --restart always -v /data/es/data/:/usr/share/elasticsearch/data -v /data/es/log/:/usr/share/elasticsearch/logs -v /data/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e "discovery.type=single-node" elasticsearch:6.8.7
- 最後通過浏覽器測試是否啟動成功
4、安裝IK分詞器
Elasticsearch分詞器,對中文分詞不是太友好。這裡我們可以下載下傳開源的
IK
分詞器
- 進入es容器
docker exec -it es bash
- 進入plugin目錄并安裝分詞器
# 進入目錄
cd plugins/
# 安裝分詞器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.7/elasticsearch-analysis-ik-6.8.7.zip
5、安裝Elasticsearch-Head
提供了操作Elasticsearch的界面
- 拉取鏡像
docker pull mobz/elasticsearch-head:5
- 運作
docker run -d -p --name eshead 9100:9100 docker.io/mobz/elasticsearch-head:5
最後通過浏覽器打開,并進行連接配接測試是否連接配接成功,這時候對ES叢集進行操作時會出現
406
異常,需要我們去配置下
# 進入head容器
docker exec -it eshead bash
# 編輯配置檔案,如果沒有vim指令自行安裝vim
vim _site/vendor.js
# 在未編輯的模式下使用以下指令查詢
/contentType
輸入i開啟編輯模式,application/x-www-form-urlencoded 改為 application/json;charset=UTF-8
# 按鍵盤的ESC健退出編輯模式,然後查詢下一個
/var inspectData = s.contentType
輸入i開啟編輯模式,将application/x-www-form-urlencoded 改為 application/json;charset=UTF-8
# 輸入wq儲存并退出,最後退出容器并重新開機容器
exit
docker restart eshead
到此就安裝好單節點的Elasticsearch啦,但是有個地方要注意,ES的
版本号一定要和分詞器的版本對應
二、安裝叢集版的Elasticsearch
這裡隻介紹如何安裝叢集,不再介紹安裝分詞器等。。
1、建立配置檔案
這裡還是延續安裝單節點,在
/data/es
目錄中建立,如果伺服器沒有該目錄就自行建立
vim es.yml
加入以下内容
cluster.name: elasticsearch-cluster
node.name: es-node1
network.host: 0.0.0.0
network.publish_host: 192.168.1.97
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.1.97:9300","192.168.1.98:9300"]
discovery.zen.minimum_master_nodes: 2
- 在第二台伺服器也建立該配置檔案并加入以下内容
cluster.name: elasticsearch-cluster
node.name: es-node2
network.host: 0.0.0.0
network.publish_host: 192.168.1.98
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.1.98:9300","192.168.1.97:9300"]
discovery.zen.minimum_master_nodes: 2
以下為配置的描述
2、運作
分别運作兩台伺服器中的Elasticsearch,這裡不在介紹拉取鏡像
docker run -d --name es -p 9200:9200 -p 9300:9300 --restart always -v /data/es/data/:/usr/share/elasticsearch/data -v /data/es/log/:/usr/share/elasticsearch/logs -v /data/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:6.8.7
這裡的指令比安裝單節點少了個環境變量
-e "discovery.type=single-node "
,運作成功後通過head去測試下連接配接,如果都連接配接成功的話就算是成功啦,如果失敗,就自己去看看哪裡配置錯了哦
本文到此就結束咯,有任何疑問歡迎在評論區發表