Docker 快速安装&搭建 Elasticsearch 环境

更新时间: 2019-05-21 17:26:05   作者: 异常教程网

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

本节中,我们将学习如何通过 Docker 快速安装与搭建 Elasticsearch 环境。

一、下载 Elasticsearch 镜像

这里以 Elasticsearch 6.5.0 为例:

docker pull elasticsearch:6.5.0

下载完成后,通过 docker images 检查一下镜像是否下载成功:

查看es镜像是否下载成功

二、先简单运行 Elasticsearch 镜像

下载成功后,简单运行 Elasticsearch 镜像:

docker run -d \
--name es \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms200m -Xmx200m" \
elasticsearch:6.5.0
  • -d:以后台的方式运行;
  • --name es:指定容器的名称为 es;
  • -p 9200:9200 -p 9300:9300 将容器的 9200、9300 端口挂载到宿主机的 9200、9300 端口上;
  • -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms200m -Xmx200m":指定为单节点模式,JVM 内存占用 200m

命令执行完成后,你也可以通过 docker ps命令来确认下容器是否启动成功。

查看es容器是否运行成功

可以看到 es 容器运行成功了,接下来,进入容器中:

docker exec -it es /bin/bash

安装 analysis-ik 中文分词插件:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.0/elasticsearch-analysis-ik-6.5.0.zip

PS: es 从 v5.5.1 版本开始支持自带的 es 插件命令来安装,如果你安装的版本不是 6.5.0,需要将命令中的版本号修改一下,具体参考 https://github.com/medcl/elasticsearch-analysis-ik

analysis-ik安装成功

安装成功后,退出容器:

exit

删除刚刚运行的容器:

docker rm -f es

PS: 当然了,你也可以通过容器的 ID 来删除。

三、复制相关文件

# 复制 es 配置文件目录到宿主机指定目录,目标目录你可以根据需要,自行修改
docker cp es:/usr/share/elasticsearch/config /usr/local/docker/es
# 复制 es 持久化数据目录到宿主机指定目录
docker cp es:/usr/share/elasticsearch/data /usr/local/docker/es
# 复制 es 插件目录到宿主机指定目录
docker cp es:/usr/share/elasticsearch/plugins /usr/local/docker/es

四、修改 es 相关配置

进入我们刚刚指定的 config 配置目录,修改 jvm.options 文件:

-Xms300m
-Xmx300m

PS: 因为小哈测试服务器就 2G 内存,这里我改成了 JVM 内存占用 300m, 如果你的内存够用,可不用改。

修改 elasticsearch.yml文件, 添加如下配置:

node.name: master
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 0.0.0.0

解释一下添加的配置,设置节点为 master 节点,并允许跨域访问,以便后面使用 head 插件图形化界面访问。

五、运行 Elasticsearch 容器

docker run -d \
--name es \
-p 9200:9200 -p 9300:9300 \
-v /usr/local/docker/es/config:/usr/share/elasticsearch/config \
-v /usr/local/docker/es/data:/usr/share/elasticsearch/data \
-v /usr/local/docker/es/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:6.5.0 

这次,我们额外添加了相关挂载命令:

  • -v /usr/local/docker/es/config:/usr/share/elasticsearch/config: 将容器中的 /usr/share/elasticsearch/config 配置目录挂载到宿主机的 /usr/local/docker/es/config 目录下;
  • -v /usr/local/docker/es/data:/usr/share/elasticsearch/data: 将容器中的 /usr/share/elasticsearch/data 数据目录挂载到宿主机的 /usr/local/docker/es/data 目录下;
  • -v /usr/local/docker/es/plugins:/usr/share/elasticsearch/plugins:将容器中的 /usr/share/elasticsearch/plugins 插件目录挂载到宿主机的 /usr/local/docker/es/plugins 目录下;

六、测试一下,瞅瞅 es 是否能够正常访问

测试一下,看 es 是否启动成功:

curl http://localhost:9200

查看es是否能够正常访问

OK, 到此 es 的单节点环境就搭建好了!