Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

ElasticSearch 节点角色

ElasticSearch 节点是“分布式搜索数据库”中的独立运行单元,节点角色决定它在集群中承担的职责。

合理使用节点角色 = 高性能 + 高稳定性 + 高扩展性。

ES 7.x -> 8.x 对角色进行了大量增强,以下内容为最新完整版本。

一览表:所有 ES 节点角色(完整)

角色 配置值 作用
Master 节点 master 负责集群管理、选主、分片调度
Data 节点(经典) data 所有索引数据都可放置
Hot 数据节点 data_hot 写入、实时搜索(高性能层)
Warm 数据节点 data_warm 温数据存储、低频查询
Cold 数据节点 data_cold 冷数据/HDD 存储
Frozen 数据节点 data_frozen 搜索 S3/MinIO 中的快照数据
Ingest 节点 ingest Pipeline 预处理、解析、grok
Machine Learning 节点 ml 运行 ML job、异常检测
Transform 节点 transform 运行数据透视、指标聚合
Coordinating-only 节点 (无配置,只是剥离所有角色) 负载均衡 + 路由 + 查询协调
Remote Cluster Client remote_cluster_client 跨集群搜索(CCS)、跨集群复制
Voting-only 节点 voting_only 参与选主但不做 master
Search 节点(8.x 新) data_content 存放用户内容数据
Tiers(层级管理) data_hot/data_warm/… 灵活管理数据生命周期

🍀 1. Master 节点(核心控制层)

配置

node.roles: ["master"]

职责

  • 选主 / 保持集群健康
  • 管理集群状态(Cluster State)
  • 管理分片调度(shard allocation)
  • 创建/删除索引
  • 管理节点加入和退出

特点

  • 不存储数据
  • CPU/内存压力低,但 不能挂
  • 建议 3 个(奇数)

最佳实践

  • master 单独部署:强烈推荐
  • 内存 4–8GB 足够
  • 磁盘不重要,但不能满

🗒️ 2. Data 节点(数据层)

旧时代

node.roles: ["data"]

代表承担所有数据职责:写入 + 搜索 + 热/冷数据。

但从 ES 7.10 开始,官方建议改用 Hot/Warm/Cold/Frozen 数据分层。

🔥 3. Hot 数据节点(高性能写入层)

配置

node.roles: ["data_hot"]

用途

  • 高并发写入(Logstash、Beats)
  • Realtime 查询
  • refresh/merge 高开销任务

最佳实践

  • NVMe SSD
  • 强 CPU(8+ 核)
  • 大内存(16–64GB)
  • shard 尽量小(≤ 30GB)

🟡 4. Warm 数据节点(中层,少量查询)

配置

node.roles: ["data_warm"]

用途

  • 索引写入完成后存放 Warm 层
  • 低频查询
  • 批量 merge 后保持长期可查

最佳实践

  • 普通 SSD 即可
  • 大容量磁盘
  • 配合 ILM:
"allocate": { "include": {"data": "warm"} }

🧊 5. Cold 数据节点(低成本归档查询)

配置

node.roles: ["data_cold"]

用途

  • 历史数据(180 天+)
  • 查询非常低
  • 基本只保留可查性

特点

  • HDD 机械盘即可
  • 对 CPU 要求低
  • 查询速度比 warm 慢

❄️ 6. Frozen 数据节点(可搜索快照层)

配置

node.roles: ["data_frozen"]

用途

  • 从对象存储(S3、OSS、MinIO)按需加载查询数据
  • 成本最低
  • 使用 searchable snapshot

特点:

  • 不存储数据
  • 查询时从对象存储加载
  • 延迟极高(秒级)

🧪 7. Ingest 节点(预处理层)

配置

node.roles: ["ingest"]

用途

  • grok 解析
  • geoip
  • log enrich
  • pipeline 处理

最佳实践:

  • 若 Logstash 负载大,可让 ES Ingest 处理部分数据
  • 可扩容多个 Ingest 节点

🤖 8. Machine Learning(ML)节点

配置

node.roles: ["ml"]

用途

  • Anomaly detection(异常检测)
  • Data frame analytics
  • 机器学习模型训练与推理

只有在使用 Elastic ML 功能时才需要。

🔄 9. Transform 节点

配置

node.roles: ["transform"]

用途

  • 数据枢纽(类似数据透视表)
  • 生成 summary index / rollup index

适合 BI/分析场景。

📡 10. Remote Cluster Client

配置

node.roles: ["remote_cluster_client"]

对跨集群搜索(CCS/CCR)有用。

🗳️ 11. Voting-only 节点

配置

node.roles: ["voting_only"]

用途:

  • 参与选主
  • 不承担任何其它 master 职责
  • 用于小集群提高选主可靠性

典型例子:

两主一 vote-only -> 可避免 split-brain。

🌐 12. Coordinating-only 节点(协调层)

配置方式:

node.roles: []

(把所有角色去掉即可)

用途:

  • client node
  • 聚合
  • 路由请求
  • 执行 query 阶段的 reduce

最佳实践:

  • 大集群中统一使用 协调节点 来处理 heavy query
  • 有效降低 Data Node 的压力

🧩 最佳实践:生产集群的角色规划

⭐ 中型集群(日志类)

节点类型 数量 说明
3 × master 3 仅 master
3 × hot 3 NVMe
3 × warm 3 普通 SSD
3 × cold 3 HDD
1–2 × ingest 可选 Log 预处理
1–2 × coordinating-only 可选 搜索分发/聚合

⭐ 大型集群(业务搜索)

节点类型 用途
master 选主、状态
data_content 业务数据
coordinating-only 查询协调
ml 异常检测
transform 统计分析