2.8 KiB
2.8 KiB
Elasticsearch
此服务用于部署 Elasticsearch,一个分布式搜索和分析引擎。
服务
elasticsearch:Elasticsearch 服务
环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
ELASTICSEARCH_VERSION |
Elasticsearch 镜像版本 | 8.16.1 |
ELASTICSEARCH_HTTP_PORT_OVERRIDE |
HTTP 主机端口映射(映射到端口 9200) | 9200 |
ELASTICSEARCH_TRANSPORT_PORT_OVERRIDE |
传输层主机端口映射(映射到端口 9300) | 9300 |
ELASTICSEARCH_CLUSTER_NAME |
Elasticsearch 集群名称 | docker-cluster |
ELASTICSEARCH_DISCOVERY_TYPE |
单节点设置的发现类型 | single-node |
ELASTICSEARCH_SECURITY_ENABLED |
启用 X-Pack 安全功能 | false |
ELASTICSEARCH_SSL_ENABLED |
启用 SSL/TLS | false |
ELASTICSEARCH_HEAP_SIZE |
JVM 堆大小 | 1g |
请根据实际需求修改 .env 文件。
卷
elasticsearch_data:Elasticsearch 数据目录elasticsearch_logs:Elasticsearch 日志目录./elasticsearch.yml:可选的自定义 Elasticsearch 配置文件
使用方法
-
启动服务:
docker compose up -d -
等待 Elasticsearch 就绪:
docker compose logs -f elasticsearch -
测试连接:
curl http://localhost:9200
基本操作
# 检查集群健康状态
curl http://localhost:9200/_cluster/health
# 列出所有索引
curl http://localhost:9200/_cat/indices?v
# 创建索引
curl -X PUT "localhost:9200/my-index"
# 索引文档
curl -X POST "localhost:9200/my-index/_doc" \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "age": 30}'
# 搜索文档
curl -X GET "localhost:9200/my-index/_search" \
-H "Content-Type: application/json" \
-d '{"query": {"match_all": {}}}'
内存配置
Elasticsearch 需要足够的内存才能有效运行。默认配置分配 1GB 堆内存。对于生产环境,请考虑:
- 将
ELASTICSEARCH_HEAP_SIZE设置为可用 RAM 的 50%(但不超过 31GB) - 确保主机至少有 2GB 可用 RAM
- 适当配置交换内存
健康检查
该服务包含健康检查,用于验证 Elasticsearch 集群健康状态。
安全提示
- 此配置禁用了安全功能以便于开发
- 生产环境请启用 X-Pack 安全、SSL/TLS 和身份验证
- 配置适当的网络安全和防火墙规则
- 定期备份索引并更新 Elasticsearch 版本