Docker中安装Elasticsearch7.7.0+elasticsearch-head+springboot 2.1.6.RELEASE

1.拉取镜像(如果拉取镜像慢 可以参考docker安装第7步设置下镜像源:https://blog.csdn.net/qq_38723394/article/details/106540036)

$  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" \
-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版权协议,转载请附上原文出处链接和本声明。