docker 搭建 elasticsearch 核心是快速启动单节点实例:拉取官方镜像(如 8.6.0 或 8.12.2),用 docker-compose 启动并配置 discovery.type=single-node、xpack.security.enabled=false,挂载数据卷与 ik 分词器插件,通过 curl 访问 localhost:9200 验证健康状态及中文搜索功能。

用 Docker 搭建 Elasticsearch 搜索环境,核心是快速启动一个可访问、可调试的单节点实例。不需要编译、不依赖宿主机 Java 环境,只要 Docker 正常,几分钟就能跑起来。
选镜像版本与拉取
建议优先使用官方镜像(docker.elastic.co/elasticsearch/elasticsearch),避免第三方镜像兼容或安全风险。生产环境注意版本对齐(比如 Kibana、Logstash、Searchkit 都要匹配),开发环境推荐 8.6.0 或 8.12.2 这类长期支持小版本:
- 拉取镜像:
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.6.0 - 验证镜像:
docker images | grep elasticsearch
用 docker-compose 启动(推荐)
比 docker run 命令更清晰、易复用、便于后续加 Kibana 或 Logstash。在项目目录下新建 docker-compose.yml:
version: '3.8'
services:
es01:
container_name: es01
image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
- "9300:9300"
volumes:
- ./es-data:/usr/share/elasticsearch/data
networks:
- es-net
<p>networks:
es-net:
driver: bridge
</p>
然后执行:docker-compose up -d。等待约 20 秒,再访问 http://localhost:9200,返回 JSON 响应即成功。
挂载配置与中文分词支持
默认配置适合快速启动,但实际搜索需处理中文——必须装 IK 分词器。步骤如下:
- 创建本地配置目录:
mkdir -p ./es/config ./es/plugins - 下载对应版本的
elasticsearch-analysis-ik(例如 8.6.0 版本需匹配 8.6.x 的 IK 插件) - 解压后放入
./es/plugins/analysis-ik/ - 在
./es/config/elasticsearch.yml中添加:http.cors.enabled: truehttp.cors.allow-origin: "*" - 修改 compose 文件,挂载配置和插件目录:
- ./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- ./es/plugins:/usr/share/elasticsearch/plugins
验证与基础测试
启动后别急着写业务代码,先做三件事确认环境可用:
- 检查健康状态:
curl http://localhost:9200/_cat/health?v—— 返回green表示正常 - 查看节点信息:
curl http://localhost:9200/_cat/nodes?v - 建一个测试索引并插入文档:
curl -XPUT "http://localhost:9200/test-index" -H "Content-Type: application/json" -d'{"settings":{"number_of_shards":1}}'curl -XPOST "http://localhost:9200/test-index/_doc/1" -H "Content-Type: application/json" -d'{"title":"测试文档","content":"Elasticsearch 用 Docker 很简单"}'curl "http://localhost:9200/test-index/_search?q=内容"











