1.拉取镜像(如果拉取镜像慢 可以参考docker安装第7步设置下镜像源:https://blog.csdn.net/qq_38723394/article/details/106540036)
$ docker pull elasticsearch:7.7.02.启动容器(测试环境 所以我加上了这个参数 -e "discovery.type=single-node")
$ docker run --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
--name='elasticsearch' --cpuset-cpus="1" -m 2G -d elasticsearch:7.7.0
3.查看启动情况并访问
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5c298ccd03f elasticsearch:7.7.0 "/tini -- /usr/local…" 37 minutes ago Up 31 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
[root@localhost ~]#
浏览器访问如下 http://192.168.2.101:9200/

注:如果容器启动进程正常 但是浏览器访问不了 有可能是防火墙没有关得原因 关闭防火墙 云服务器记得控制台配置开放端口
# 查看防火墙状态
$ firewall-cmd --state
# 停止firewall
$ systemctl stop firewalld.service
# 禁止firewall开机启动
$ systemctl disable firewalld.service 4.ik 插件分词器在线安装 (安装中提示Continue with installation? [y/N]) 输入y 等待安装完成 exit退出容器
[root@localhost ~]# docker exec -it elasticsearch bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip
[root@c5c298ccd03f elasticsearch]# exit
exit
5.查看容器id 并重启容器 postman测试分词器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5c298ccd03f elasticsearch:7.7.0 "/tini -- /usr/local…" 5 minutes ago Up 5 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
[root@localhost ~]# docker restart c5c298ccd03f
postman post请求分词测试:http://192.168.2.101:9200/_analyze
{
"tokenizer":"ik_smart",
"text":"中国加油"
}结果如下:

至此docker 安装测试单机版elasticsearch完成~!
6.可视化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浏览器访问(http://192.168.2.101:9100/)结果如下:

7.开始链接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浏览器重新访问:(链接成功)

8.测试(springboot集成https://blog.csdn.net/qq_38723394/article/details/106544003)并查看数据(代码测试访问创建索引存入数据,这时候去elasticsearch-head 数据浏览 发现并没有数据 浏览器F12查看 报406错误)

解决方案:进入head安装目录,cd _site/ 修改vendor.js 配置
[root@localhost ~]# docker exec -it elasticsearch-head /bin/bash
root@74106a71c1c8:/usr/src/app# cd _site/
root@74106a71c1c8:/usr/src/app/_site# vim vendor.js
bash: vim: command not found
可以看到 我这里vim命令 报command not found 所以 这里我得先解决一下 (正常跳过次环节,这个安装有点慢 需要多试几下)
root@74106a71c1c8:/usr/src/app/_site# apt-get update
Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
Ign http://deb.debian.org jessie InRelease
Get:2 http://deb.debian.org jessie-updates InRelease [16.3 kB]
Get:3 http://deb.debian.org jessie Release.gpg [1652 B]
Get:4 http://deb.debian.org jessie Release [77.3 kB]
Get:5 http://deb.debian.org jessie-updates/main amd64 Packages [20 B]
Get:6 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Get:7 http://security.debian.org jessie/updates/main amd64 Packages [984 kB]
Fetched 10.2 MB in 10min 19s (16.5 kB/s)
.......................
root@74106a71c1c8:/usr/src/app/_site# apt-get install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
.......................
vim 打开文件后 全局搜索定位 找 application/x-www-form-urlencoded 改2处 改为 application/json;charset=UTF-8


保存 并退出 然后重启容器:
root@74106a71c1c8:/usr/src/app/_site# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74106a71c1c8 mobz/elasticsearch-head:5 "/bin/sh -c 'grunt s…" About an hour ago Up 48 minutes 0.0.0.0:9100->9100/tcp elasticsearch-head
c5c298ccd03f elasticsearch:7.7.0 "/tini -- /usr/local…" 2 hours ago Up 48 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
[root@localhost ~]# docker restart 74106a71c1c8
74106a71c1c8
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74106a71c1c8 mobz/elasticsearch-head:5 "/bin/sh -c 'grunt s…" About an hour ago Up 6 seconds 0.0.0.0:9100->9100/tcp elasticsearch-head
c5c298ccd03f elasticsearch:7.7.0 "/tini -- /usr/local…" 2 hours ago Up 49 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
[root@localhost ~]#

至此 Docker中安装Elasticsearch7.7.0(单机版本)+可视化elasticsearch-head安装完成!
版权声明:本文为qq_38723394原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。