前期工作把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