1、拉取ElasticSearch镜像
获取es的镜像
docker pull elasticsearch:7.12.0
查看镜像是否拉取成功
docker images
2、创建Elasticsearch容器
创建所需文件夹
创建Elasticsearch配置文件夹
mkdir -p /usr/local/data-docker/elasticsearch/config
#2、创建Elasticsearch数据文件夹
mkdir -p /usr/local/data-docker/elasticsearch/data
#3、创建Elasticsearch插件文件夹(如:ik)
mkdir -p /usr/local/data-docker/elasticsearch/plugins
#说明:目的将CentOS本地的文件夹映射到Elasticsearch容器,以实现容器数据的持久化到CentOS本地,以及通过CentOS本地文件夹内容的修改同步到容器
#创建并写入elasticsearch.yml配置,注意:http.host: 0.0.0.0 冒号后有一空格
echo "http.host: 0.0.0.0">>/usr/local/data-docker/elasticsearch/config/elasticsearch.yml
文件夹赋权
chmod -R 777 /usr/local/data-docker/elasticsearch/
启动容器
docker run --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.0
参数说明
--name elasticsearch:将Elasticsearch容器命名为 elasticsearch
-p 9200:9200:将容器的9200端口映射到宿主机9200端口
-p 9300:9300:将容器的9300端口映射到宿主机9300端口,目的是集群互相通信
-e "discovery.type=single-node":单例模式
-e ES_JAVA_OPTS="-Xms64m -Xmx128m":配置内存大小
-v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:将配置文件挂载到宿主机
-v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data:将数据文件夹挂载到宿主机
-v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins:将插件目录挂载到宿主机(需重启)
-d elasticsearch:后台运行容器,并返回容器ID
查看启动的容器
docker ps
在浏览器中输入ip:9200,如果出现以下界面就是安装成功了!
3、安装ElasticSeach的工具
拉取镜像
#拉取镜像
docker pull mobz/elasticsearch-head:5
启动容器
docker run --name elasticsearch-head -p 9100:9100 -d elasticsearch-head:5
在浏览器中输入ip:9100,如果出现以下界面就是安装成功了!
处理跨域问题
elasticsearch-head在连接ElasticSearch会发现无法连接,由于前后端分离开发,所以会存在跨域问题,需要在服务端做跨域处理。
docker exec -it elasticsearch(或者容器id) /bin/bash
修改配置文件,去到安装elasticsearch时,创建的配置文件夹下
vim /usr/local/data-docker/elasticsearch/config/elasticsearch.yml
把如下内容写入配置文件中
http.cors.enabled: true
http.cors.allow-origin: "*"
重启容器即可
docker restart 容器ID
406和elasticsearch-head不显示数据的问题
ElasticSearch-Head可以成功连接ElasticSearch了,但进行数据操作时会报406错误。
只需要修改ElasticSearch-Head容器中的配置即可,将配置文件复制到宿主机进行修改。
#复制vendor.js到外部
docker cp 容器id:/usr/src/app/_site/vendor.js /usr/local/
#修改vendor.js
vim vendor.js
修改文件第6886、7574行,将"application/x-www-from-urlencodes"修改为"application/json;charset=UTF-8"即可。
修改后再将文件复制到容器中
docker cp /usr/local/vendor.js 容器id:/usr/src/app/_site
重启ElasticSearch-Head容器
docker restart 容器id
4、安装IK分词器
使用wget进行安装
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.0/elasticsearch-analysis-ik-7.12.0.zip
使用wget安装出现Unable to establish SSL connection问题,执行如下命令:
yum install opensslls
yum install openssl-devel
在elasticsearch插件目录创建一个IK目录
#创建目录
mkdir /usr/share/elasticsearch/plugins/ik
#将文件压缩包移动到ik中
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.12.0.zip /usr/share/elasticsearch/plugins/ik
#进入目录
cd /usr/share/elasticsearch/plugins/ik
#解压
unzip elasticsearch-analysis-ik-7.12.0.zip
#删除压缩包
rm -rf elasticsearch-analysis-ik-7.12.0.zip
重启容器即可
docker restart 容器ID