1. 程式人生 > 實用技巧 >Docker下安裝ElasticSearch和Kibana

Docker下安裝ElasticSearch和Kibana

elasticsearch安裝

執行容器

#拉取映象
docker pull elasticsearch:7.9.3

#建立資料目錄
mkdir /data/elasticsearch/

#執行一下容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.9.3

#把data、plugins、config三個目錄copy出來
docker cp <容器ID>:/usr/share/elasticsearch/data /data/elasticsearch
docker cp <容器ID>:/usr/share/elasticsearch/plugins /data/elasticsearch
docker cp <容器ID>:/usr/share/elasticsearch/config /data/elasticsearch

#遍歷資料夾賦一下許可權
chmod -R 777 /data/elasticsearch

#刪掉容器
docker rm -f <容器ID>

#再次執行容器,掛載目錄
docker run -d \
 --name elasticsearch \
 -p 9200:9200 \
 -p 9300:9300 \
 --env "node.name=elasticsearch" \
 --env "cluster.name=test-elasticsearch" \
 --env "bootstrap.memory_lock=true" \
 --env "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
 --env "discovery.type=single-node" \
 --env "script.painless.regex.enabled=true" \
 --volume /data/elasticsearch/data:/usr/share/elasticsearch/data \
 --volume /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 --volume /data/elasticsearch/config:/usr/share/elasticsearch/config \
 --volume /etc/localtime:/etc/localtime \
 elasticsearch:7.9.3

這樣es就啟動好了。我們可以去檢查es是否安裝完成,可以輸入命令:

curl http://localhost:9200

或者在瀏覽器中開啟http://localhost:9200這個網址,如果能看到以下資訊則說明我們的es是已經安裝好了的

{
  "name" : "elasticsearch",
  "cluster_name" : "test-elasticsearch",
  "cluster_uuid" : "_GdxokQOSCKcBd9lCkmiFw",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date" : "2020-10-16T10:36:16.141335Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

修改配置,解決跨域訪問問題

首先進入到容器中,然後進入到指定目錄修改elasticsearch.yml檔案

docker exec -it elasticsearch /bin/bash
cd /usr/share/elasticsearch/config/
vi elasticsearch.yml

在elasticsearch.yml的檔案末尾加上:

http.cors.enabled: true
http.cors.allow-origin: "*"

修改配置後重啟容器即可。

docker restart elasticsearch

或直接在掛載捲上修改 "/data/elasticsearch/config/elasticsearch.yml"

安裝ik分詞器

es自帶的分詞器對中文分詞不是很友好,所以我們下載開源的IK分詞器來解決這個問題。首先進入到plugins目錄中下載分詞器,下載完成後然後解壓,再重啟es即可。具體步驟如下: 注意:elasticsearch的版本和ik分詞器的版本需要保持一致,不然在重啟的時候會失敗。可以在這檢視所有版本,選擇合適自己版本的右鍵複製連結地址即可。點選這裡

cd /usr/share/elasticsearch/plugins/
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip
exit
docker restart elasticsearch 

然後可以在kibana介面的dev tools中驗證是否安裝成功

POST test/_analyze
{
  "analyzer": "ik_max_word",
  "text": "你好我是東邪Jiafly"
}

不新增"analyzer": "ik_max_word",則是每個字分詞,可以在下面kibana安裝完成以後嘗試一下

kibana安裝

版本最好跟elasticsearch一致

docker pull kibana:7.9.3
docker run --name kibana --link=elasticsearch:test  -p 5601:5601 -d kibana:7.9.3

啟動沒那麼快,等一會兒,啟動以後可以開啟瀏覽器輸入http://localhost:5601就可以開啟kibana的介面了