ES版本选择:
先检查自己SpringBoot版本,SpringBoot版本是用得是2.3.12.RELEASE,所以ES安装版本可以用7.12.0或elasticsearch-7.6.2/kibana-7.6.2-windows-x86_64(ES和kibana版本必须一致)
ES对JDK的支持可参考:支持矩阵 | Elastic
拉取镜像
docker pull elasticsearch:7.12.0
创建挂载目录
mkdir -p /home/docker/elasticsearch/config
mkdir -p /home/docker/elasticsearch/data
mkdir -p /home/docker/elasticsearch/plugins
# 下文命令意思:在config文件夹下创建 elasticsearch.yml文件 内容:http.host: 0.0.0.0注意此处冒号有空格(7.4.2版本不需要执行下面这句)
echo "http.host: 0.0.0.0" >> /home/docker/elasticsearch/config/elasticsearch.yml
授权
chmod -R 777 /home/docker/elasticsearch
创建容器:
docker run --name elasticsearch --restart=always -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
-v /home/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.0
查看启动日志:
docker logs elasticsearch
上面这些命令只使用于7.12版本,另外版本不一样,可能装不成功;执行:
curl http://localhost:9200
或直接在浏览器端访问ip:9200,看到这个表示安装成功了:
# 开机启动
docker update elasticsearch --restart=always
docker pull mobz/elasticsearch-head:5
创建容器 :
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
这是状态试试Create 还没有运行,启动:
docker start 容器id
直接使用域名
加端口9100
访问,左上角的连接输入框输入ES服务器与端口号 再点击‘连接’按钮:
处理跨域
在连接ElasticSearch会发现无法连接,由于时前后端分离开发,所以会存在跨域问题,需要在服务端做跨域处理。
# 执行命令
docker exec -it elasticsearch /bin/bash
# 进入到第一步创建的ElasticSearch容器中,修改配置文件
vi config/elasticsearch.yml
# 添加下面两行:
http.cors.enabled: true
http.cors.allow-origin: "*"
将上边俩行写进配置文件中,注意这里是用yml的配置文件,简单普及一下此类配置文件的几点语法。
冒号后边必须有一个空格
使用空格的缩进标识层级关系,空格数据不重要,只要是左边对其的一列键即可。
对大小写十分敏感
缩进时不允许使用tab,只允许使用空格。
配置修改完后需执行命令exit退出容器,接着执行docker restart 容器ID重启容器。
此时通过ElasticSearch-Head可以成功连接ElasticSearch了,但进行数据操作时会报406错误。
只需要修改ElasticSearch-Head容器中的配置即可,将配置文件复制到宿主机进行修改。
# 若es目录下没有head文件夹则先在es目录下创建
mkdir /home/docker/elasticsearch/head
# docker容器中的文件复制到你的宿主机目录
docker cp es-head容器ID:/usr/src/app/_site/vendor.js /home/docker/elasticsearch/head/
进入到/home/elasticsearch/head/可看到从容器中复制出来的文件vendor.js。
vim /home/docker/elasticsearch/head/vendor.js
# 修改文件第6886、7574行 用命令":set nu"显示行号,6886G 到6886行
将"application/x-www-from-urlencodes"修改为"application/json;charset=UTF-8" 【也可使用Mobaxterm的sftp功能直接打开服务器文件找到行位置直接修改保存】
修改文件第6886、7574行,将"application/x-www-from-urlencodes"修改为"application/json;charset=UTF-8" 【可使用Mobaxterm的sftp功能直接打开服务器文件找到行位置直接修改保存】
修改后再将文件复制到容器中,从容器复制文件到宿主机命令已经使用过了,那么现在只不过是把俩个目录反过来即可执行
docker cp /home/docker/elasticsearch/head/vendor.js es-head容器id:/usr/src/app/_site
最后一步重启ElasticSearch-Head容器就结束了。
docker restart elasticsearch-head
es安装参考
参考二文章(安装ik分词器这玩意装与不装都挺好,不装查到的东西也很精确够使,装上会查出一些没有用的!)
例如:首先需要把Kibana从DockerHub上拉取下来:统一版本7.6.2【也可以直接第2步】
#拉去Kibana
docker pull kibana:7.6.2
查看docker内部ip
ip add
-e ELASTICSEARCH_HOSTS 设置elasticsearch地址【设置成↑上面的ip地址】
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://IP地址:9200 -p 5601:5601 -d kibana:7.6.2
之前设置成服务器的地址一直报连接es超时问题(这种不设置应该也能安装成功)
License information could not be obtained from Elasticsearch due to Error: Request Timeout after 300
也可以先pull,如果没有先pull,上面语句会直接下载并安装
# 进入到容器
docker exec -it kibana /bin/bash
# 修改文件内容(连接es与汉化)
vi /usr/share/kibana/config/kibana.yml
server.name: kibana
server.host: "0.0.0.0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://与上面一样的dockerIP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN
加不加双引号好像都可以:
#kibana汉化
i18n.locale: "zh-CN"
重启即可使用
docker restart kibana
服务器ip:5601即可访问
kibana安装参考文章
kibana语法
ElasticSearch在springboot中使用