☰
Docker Compose 本地环境搭建:Elasticsearch
2026/10/8 5:43:23 网站建设 项目流程

Docker Compose 本地环境搭建:Elasticsearch

  • 前言:Docker Compose 本地环境搭建相关文章
  • Docker Compose 本地环境搭建:Elasticsearch
    • .env
    • docker-compose.yml
    • 执行
    • 浏览器访问
    • IK 分词器安装

前言:Docker Compose 本地环境搭建相关文章

  • Docker Compose 本地环境搭建:独立 Compose + 共享网络 + .env 统一管理(架构设计篇)

  • Docker Compose 本地环境搭建:.env 统一配置模板

  • Docker Compose 本地环境搭建:mysql

  • Docker Compose 本地环境搭建:elasticsearch

  • Docker Compose 本地环境搭建:skywalking

  • Docker Compose 本地环境搭建:redis

  • Docker Compose 本地环境搭建:nacos

  • Docker Compose 本地环境搭建:nginx


Docker Compose 本地环境搭建:Elasticsearch


.env

新增Elasticsearch相关配置

############################################################# Elasticsearch 配置############################################################# Elasticsearch 镜像版本。ES_VERSION=8.18.8# elastic 内置用户密码。ES_PASSWORD=Pass@8520# Elasticsearch HTTP REST API 宿主机端口。ES_PORT_HTTP=9200# Elasticsearch Transport 宿主机端口。ES_PORT_TRANSPORT=9300

docker-compose.yml

# =========================================================# Elasticsearch Docker Compose 配置# =========================================================## 目录结构:# dev/# ├── .env# └── elasticsearch/# ├── docker-compose.yml# └── volumes/# ├── config/ # Elasticsearch 配置# ├── data/ # Elasticsearch 持久化数据# ├── logs/ # Elasticsearch 日志# └── plugins/ # Elasticsearch 第三方插件## 说明:## 1. 环境配置# Elasticsearch 所需的版本、密码、端口、网络等参数,# 统一由当前环境上级目录的公共 .env 文件管理。## 2. 持久化目录# Elasticsearch 需要长期保存的配置、数据、日志和插件,# 统一存放在 elasticsearch/volumes/ 目录下。## 3. 路径规则# 所有宿主机挂载目录均采用相对路径,# 相对路径以当前 docker-compose.yml 所在目录为基准。# 例如 ./volumes/data 对应 elasticsearch/volumes/data。## 4. 环境隔离# 不在挂载路径中重复使用 ${ENV}。# 不同环境通过上层目录进行隔离,例如:# dev/elasticsearch、test/elasticsearch、prod/elasticsearch。## 5. 数据迁移# elasticsearch/ 目录包含 Compose 配置及 Elasticsearch# 持久化数据,可作为当前环境的整体备份和迁移单元。## 6. 镜像文件# Elasticsearch 镜像自身的程序、JDK、依赖库和内置模块,# 由 Docker 镜像提供,不进行宿主机持久化挂载。## =========================================================############################################################# 网络配置############################################################networks:# Compose 内部网络名称。env_network:# 使用 Docker Bridge 网络。driver: bridge# Docker 实际网络名称,由公共 .env 管理。name:${NETWORK_NAME}# 自定义网络地址范围。ipam: config: - subnet:${NETWORK_SUBNET}############################################################# 服务配置############################################################services:########################################################### Elasticsearch##########################################################elasticsearch:# Elasticsearch 镜像及版本。# 版本由公共 .env 中的 ES_VERSION 管理。image: elasticsearch:${ES_VERSION}# 容器名称。# 例如:elasticsearch_8.18.8_devcontainer_name: elasticsearch_${ES_VERSION}_${ENV}# 加入当前环境的公共 Docker 网络。networks: - env_network# 端口映射。## HTTP:# 宿主机 ${ES_PORT_HTTP} -> 容器 9200## Transport:# 宿主机 ${ES_PORT_TRANSPORT} -> 容器 9300ports: -"${ES_PORT_HTTP}:9200"-"${ES_PORT_TRANSPORT}:9300"# Elasticsearch 运行参数。environment:# 单节点模式。discovery.type: single-node# elastic 内置用户密码。ELASTIC_PASSWORD:${ES_PASSWORD}# 开启 Elasticsearch 安全认证。xpack.security.enabled:"true"# 磁盘水位配置,避免磁盘空间不足时过早触发保护。cluster.routing.allocation.disk.watermark.low:"90%"cluster.routing.allocation.disk.watermark.high:"95%"cluster.routing.allocation.disk.watermark.flood_stage:"97%"######################################################### 持久化目录########################################################## Elasticsearch 需要持久化的目录统一放在:## elasticsearch/volumes/## 所有宿主机路径均使用相对路径。## 相对路径解析规则:## ./volumes/xxx## 相对于当前 docker-compose.yml 所在目录解析。## 当前 Compose 文件:## dev/elasticsearch/docker-compose.yml## 因此:## ./volumes/data## 实际对应:## dev/elasticsearch/volumes/data## 同理:## ./volumes/config# ./volumes/data# ./volumes/logs# ./volumes/plugins## 分别对应当前 elasticsearch 目录下的持久化目录。## 不使用 ${ENV} 拼接路径,环境隔离由上层目录完成:## dev/elasticsearch/# test/elasticsearch/# prod/elasticsearch/#########################################################volumes:# Elasticsearch 配置文件。# 宿主机相对路径:# ./volumes/config## 容器路径:# /usr/share/elasticsearch/config## 保存 Elasticsearch 配置、JVM 配置、日志配置、# 证书及其他需要持久化的配置文件。- ./volumes/config:/usr/share/elasticsearch/config# Elasticsearch 核心持久化数据。# 宿主机相对路径:# ./volumes/data## 容器路径:# /usr/share/elasticsearch/data## 保存索引、Shard、Lucene 数据及集群持久化状态。- ./volumes/data:/usr/share/elasticsearch/data# Elasticsearch 运行日志。# 宿主机相对路径:# ./volumes/logs## 容器路径:# /usr/share/elasticsearch/logs- ./volumes/logs:/usr/share/elasticsearch/logs# Elasticsearch 第三方插件。# 宿主机相对路径:# ./volumes/plugins## 容器路径:# /usr/share/elasticsearch/plugins## 插件必须与 ES_VERSION 保持兼容。- ./volumes/plugins:/usr/share/elasticsearch/plugins######################################################### 健康检查########################################################healthcheck:# 使用 elastic 用户访问 Elasticsearch HTTP API。test:["CMD-SHELL","curl -sf -u elastic:${ES_PASSWORD}http://localhost:9200 >/dev/null || exit 1"]# 每 10 秒检查一次。interval: 10s# 单次检查超时时间。timeout: 5s# 连续失败 30 次后标记为 unhealthy。retries:30# 启动阶段给予 300 秒宽限时间。start_period: 300s# 容器异常退出后自动重启。restart: unless-stopped######################################################### 容器标签########################################################labels:# 当前环境。env:${ENV}# Elasticsearch 版本。version:${ES_VERSION}# 服务名称。service: elasticsearch_${ENV}

执行

在.env同级目录下执行

dockercompose --env-file .env-felasticsearch/docker-compose.yml up-d

各参数含义如下:

参数含义
docker compose执行 Docker Compose
--env-file .env指定环境变量文件为.env
-f指定 Compose 配置文件
elasticsearch/docker-compose.yml要使用的 Compose 配置文件路径
up创建并启动服务
-d后台运行(Detached Mode),启动后立即返回命令行

浏览器访问

http://localhost:9200/


IK 分词器安装

进入容器安装插件:

dockerexec-itelasticsearch_8.18.8_devbash

执行安装IK分词器命令

elasticsearch-plugininstall--batchhttps://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.18.8.zip

安装 IK 分词器后必须重启 Elasticsearch 容器,才能让 Elasticsearch 加载这个插件。

dockerrestart elasticsearch_8.18.8_dev

测试 IK 分词器

curl-uelastic:Pass@8520-XPOST"http://localhost:9200/_analyze"-H"Content-Type: application/json"-d"{\"analyzer\":\"ik_smart\",\"text\":\"中华人民共和国国歌\"}"


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询