Docker 快速安装&搭建 Elasticsearch 环境
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ; - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观
本节中,我们将学习如何通过 Docker 快速安装与搭建 Elasticsearch 环境。
一、下载 Elasticsearch 镜像
这里以 Elasticsearch 6.5.0 为例:
docker pull elasticsearch:6.5.0
下载完成后,通过 docker images
检查一下镜像是否下载成功:
二、先简单运行 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 容器运行成功了,接下来,进入容器中:
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
安装成功后,退出容器:
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
OK, 到此 es 的单节点环境就搭建好了!