766 字
4 分钟
ElasticSearch部署

Docker 部署 Elasticsearch 8.17.0 + IK 分词器#

背景#

国内服务器拉取 ES 官方镜像(docker.elastic.co)及在线下载插件经常 I/O timeout,docker build 一键构建含插件的镜像极易失败。最终采用分步执行策略:基础镜像 → 启动容器 → 容器内安装插件 → 重启生效。


Step 1:获取基础镜像#

通过国内加速源拉取,然后重新打上官方 Tag 保持配置整洁:

Terminal window
# 国内加速源拉取
docker pull docker.1panel.live/elastic/elasticsearch:8.17.0

💡 离线备选方案:本地电脑 docker save 导出 tar → 传至服务器 → docker load -i 离线导入。


Step 2:启动 ES 容器#

利用环境变量直接配置,无需额外挂载配置文件:

Terminal window
docker run -d --name es8.17.0 --restart unless-stopped -p 9200:9200 -v es-data:/usr/share/elasticsearch/data -e "discovery.type=single-node" -e "xpack.security.enabled=false" -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" docker.1panel.live/elastic/elasticsearch:8.17.0

参数拆解#

参数值含义
-d—后台运行
--namees8.17.0固定容器名,方便后续 exec、restart
--restartunless-stopped自动重启(手动 stop 除外)
-p 19200:9200宿主机:容器ES HTTP 端口映射,换用 19200 避免与宿主机已有服务冲突
-v es-data:/usr/share/elasticsearch/data命名卷索引数据持久化
-e discovery.type=single-node环境变量单节点模式,无需配置集群
-e xpack.security.enabled=false环境变量关闭安全认证(免密登录),适合开发/测试
-e ES_JAVA_OPTS=-Xms512m -Xmx512m环境变量限制 JVM 堆内存 512MB,防止撑爆小内存服务器

核心参数详解#

discovery.type=single-node:ES 8.x 默认以集群模式启动,单机部署必须设置此项,否则服务无法正常启动。

xpack.security.enabled=false:关闭 HTTPS 和密码认证。生产环境应保持开启(true),并通过 ELASTIC_PASSWORD 环境变量设置密码。

ES_JAVA_OPTS:ES 是 Java 应用,默认会吃 4GB 堆内存。小服务器必须用此项限制,推荐设置 Xms = Xmx 避免运行时 resize 开销。


Step 3:在线安装 IK 分词器#

等待容器启动(约十几秒),通过 docker exec 直接在运行中的容器内执行安装(使用国内加速下载链接):

Terminal window
docker exec -it es8.17.0 elasticsearch-plugin install -b \
https://get.infini.cloud/elasticsearch/analysis-ik/8.17.0
参数含义
-it交互式伪终端,观察安装进度
es8.17.0容器名
elasticsearch-plugin installES 内置的插件管理命令
-b--batch,自动确认许可,不交互询问
URLIK 分词器 8.17.0 版本的下载地址

Step 4:重启容器使插件生效#

Terminal window
docker restart es8.17.0

插件安装后必须重启,ES 才会在启动时扫描并加载新的 .zip 插件包。


验证#

验证插件加载#

Terminal window
# 注意:路径直接跟 /_cat/plugins,不要多写斜杠
curl http://192.168.148.8:9200/_cat/plugins?v

期望输出:

name component version
d52544f05d01 analysis-ik 8.17.0

验证 ES 服务#

Terminal window
curl http://192.168.148.8:9200/
# 期望输出含:
# "name" : "..."
# "version" : {"number" : "8.17.0"}
# "tagline" : "You Know, for Search"

部署总结#

步骤命令说明
拉取镜像docker pull + docker tag国内加速源绕过网络问题
启动容器docker run + 环境变量single-node + 关闭安全 + 内存限制
安装插件docker exec + plugin install -b容器内直接安装,绕过 build 网络问题
重启生效docker restart加载新插件
验证curl /_cat/plugins确认 analysis-ik 已加载

相关链接#

ElasticSearch部署
https://shirone.mysqil.com/posts/docker/elasticsearch部署/
作者
HikariTish
发布于
2026-05-13
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 155 天

部分内容可能已过时