前期工作把docker安裝好,設置鏡像源
vim /etc/docker/daemon.json
#添加如下配置(如果沒有該文件則新建)
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
#保存並退出 然後重啓docker服務
$ systemctl daemon-reload
$ systemctl restart docker
1.拉取鏡像
docker pull elasticsearch:7.7.0
2.啓動容器(測試環境 設置單節點啓動 -e "discovery.type=single-node")
docker run --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch
docker ps # 查看是否啓動成功
#訪問127.0.0.1:9200
3.進入docker容器ik分詞安裝在線安裝
docker exec -it elasticsearch bash #進入docker容器
#在線安裝
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip
由於網路原因時間很長這裏推薦離線安裝 ,需要停止刪除之前創建的elasticsearch 容器,
docker stop elasticsearch
docker rm elasticsearch
docker run --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v D:\elasticsearch:/var/elasticsearch/ --name elasticsearch
安裝IK分詞器插件下載解壓
https://github.com/medcl/elasticsearch-analysis-ik/releases
elasticsearch-analysis-ik-7.7.0.zip
#在es安裝目錄的plugins下,創建ik文件夾
mkdir elasticsearch-7.7.0/plugins/ik
#將下載好的zip包解壓到剛纔創建的ik文件夾中
unzip elasticsearch-analysis-ik-7.7.0.zip -d elasticsearch-7.7.0/plugins/ik
重啓es服務
docker restart elasticsearch
測試是否安裝成功
curl -XGET -H 'Content-Type: application/json' 'http://localhost:9200/_analyze?pretty' -d '{
"analyzer" : "ik_max_word",
"text": "中華人民共和國國歌"
}'
4.可視化工具elasticsearch-head 安裝
[root@localhost ~] docker pull mobz/elasticsearch-head:5
[root@localhost ~] docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elasticsearch 7.7.0 7ec4f35ab452 3 weeks ago 757MB
mobz/elasticsearch-head 5 b19a5c98e43b 3 years ago 824MB
[root@localhost ~] docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
74106a71c1c84cd2b7624cc4bfadf47789f627c73ffe9fb706591070cc875cba
[root@localhost ~] docker start elasticsearch-head
elasticsearch-head
5.開始鏈接elasticsearch服務 你會發現鏈接不上,由於是前後端分離開發,所以會存在跨域問題,需要在服務端做CORS的配置
[root@localhost ~]# docker exec -it elasticsearch /bin/bash
[root@c5c298ccd03f elasticsearch]# vi config/elasticsearch.yml
添加如下配置:保存 退出容器 並重啓
http.cors.enabled: true
http.cors.allow-origin: "*"
操作如下:
[root@c5c298ccd03f elasticsearch]# exit
exit
[root@localhost ~]# docker restart elasticsearch
Error response from daemon: Cannot restart container elasticsearch: driver failed programming external connectivity on endpoint elasticsearch (776f8445f50cf5472cb5bf3ded903e2f5985a1aeff544fc2685d54aef629ce7e): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9300 -j DNAT --to-destination 172.17.0.2:9300 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
可以看到我這裏重啓elasticsearch容器得時候 報錯了 這個是由於docker 的網絡原因引起的 重啓一下docker服務就可以了
[root@localhost ~]# systemctl restart docker
查看我們服務 並啓動
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5c298ccd03f elasticsearch:7.7.0 "/tini -- /usr/local…" About an hour ago Up 3 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74106a71c1c8 mobz/elasticsearch-head:5 "/bin/sh -c 'grunt s…" 13 minutes ago Exited (137) 35 seconds ago elasticsearch-head
c5c298ccd03f elasticsearch:7.7.0 "/tini -- /usr/local…" About an hour ago Up 34 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
[root@localhost ~]# docker start 74106a71c1c8
74106a71c1c8
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74106a71c1c8 mobz/elasticsearch-head:5 "/bin/sh -c 'grunt s…" 14 minutes ago Up 2 seconds 0.0.0.0:9100->9100/tcp elasticsearch-head
c5c298ccd03f elasticsearch:7.7.0 "/tini -- /usr/local…" About an hour ago Up 54 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch