Docker 安裝 ElasticSearch

什么是 Elastic Stack

Elastic Stack 如果你沒有聽過,那么 ELK 一定聽過。ELK 是三款軟件的簡稱,分別是 Elasticsearch
、Logstash
、Kibana
組成,隨著 Elastic 的發(fā)展需要融入越來越的技術(shù),比如 Beats
,如果再用每個技術(shù)的首字母大寫拼接,名稱會越來越長,所以技術(shù)團隊決定換一個名稱 Elastic Stack
,ELK
是之前的稱呼 Elastic Stack
是新的稱呼。
什么 Elasticsearch

全文搜索是很多網(wǎng)站常見功能,比如 GitHub 站內(nèi)搜索、JD 商品搜索、B 站視頻搜索。Elasticsearch
是當(dāng)今最火的搜索引擎之一,它的底層基于另外一個 java
開源搜索引擎 Lucene
,是一款開源分布式搜索引擎,并且提供了一系列 REST API
操作接口。
docker 安裝 Elasticsearch

1、拉去鏡像
docker pull docker.io/elasticsearch:版本號
docker pull docker.io/elasticsearch:7.1.1
2、查看鏡像
docker images

3、運行容器啟動 Elasticsearch
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" b0e9f9f047e6
3.1、參數(shù)解釋:
-d:后臺啟動
--name:容器名稱
-p:端口映射
-e:設(shè)置環(huán)境變量
discovery.type=single-node:單機運行
b0e9f9f047e6:鏡像id
如果啟動不了,可以加大內(nèi)存設(shè)置:-e ES_JAVA_OPTS="-Xms512m -Xmx512m"
3.2、使用 docker ps
命令查看容器狀態(tài)

3.3、瀏覽器訪問 Elasticsearch 地址(注:訪問前先關(guān)閉防火墻)

4、安裝 ik 分詞器
docker exec -it es bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.1/elasticsearch-analysis-ik-7.1.1.zip
安裝完畢之后輸入:exit退出容器。
4.1、參數(shù)解釋:
docker exec -it 容器id或容器名稱 bash:進入容器內(nèi)部,并以終端的形式輸入命令
4.2、安裝 ik 分詞器后重啟 Elasticsearch
docker restart 7f
4.3、postman 測試 ik 分詞器(注意:把 Content-Type 設(shè)置為 application/json )

5、安裝 es-head
docker pull mobz/elasticsearch-head:5

5.1、啟動容器
docker start elasticsearch-head
5.2、訪問 es-head

5.3、es-head 連接 Elasticsearch
當(dāng)你輸入 http://192.168.232.128:9200/ 點擊連接時,會發(fā)現(xiàn)無法連接。是因為前后端分離開發(fā),存在跨域問題,需要在服務(wù)端做 CORS 的配置。我們再次進入 Elasticsearch 容器內(nèi)部,修改 elasticsearch.yml
配置。
docker exec -it es /bin/bash
[root@7f213e9fb6bb elasticsearch]# vi config/elasticsearch.yml
添加如下兩條配置,注意冒號后面有空格,保存并退出。
http.cors.enabled: true
http.cors.allow-origin: "*"
如圖:

最后退出容器,并重啟 Elasticsearch。
[root@7f213e9fb6bb elasticsearch]# exit
exit
[root@localhost ~]# docker restart 7f
再次訪問 es-head,連接成功。

6、結(jié)束語
本篇文章主要講解 docker 如何安裝 ElasticSearch7.1.1(單機版)+ik 分詞器 +es-head 可視化插件。
本文作者為檸檬班羅杰老師,轉(zhuǎn)載請注明出處!