Docker安装ElasticSearch

649 阅读3分钟

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,如果出现以下界面就是安装成功了!

Snipaste_2023-03-13_17-09-24.png

3、安装ElasticSeach的工具

拉取镜像

#拉取镜像
docker pull mobz/elasticsearch-head:5

启动容器

docker run --name elasticsearch-head -p 9100:9100 -d elasticsearch-head:5

在浏览器中输入ip:9100,如果出现以下界面就是安装成功了!

Snipaste_2023-03-13_17-09-24.png

处理跨域问题

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