⚡ Elasticsearch 核心架构图
Cluster · Nodes · Index · Shards · Read/Write Flow
💻Client
⟷
⚖️协调节点 / VIP
⟷
🔌REST API
HTTP 9200 / TCP 9300
ES Cluster(集群)
👑 Master Node
主节点
负责集群元数据管理、节点加入/离开、分片分配决策
集群状态
分片路由表
索引元数据
选举 Raft
💾 Data Node
数据节点
存储实际数据,执行 CRUD 和搜索;包含多个分片(Shard)
Primary Shard
Replica Shard
Lucene 引擎
Segment 文件
🔀 Coordinating Node
协调节点
接收客户端请求,路由到对应分片,汇总结果后返回;无状态
请求分发
结果聚合
散集阶段
负载均衡
🔧 Ingest Node
摄入节点
文档预处理管道(Pipeline):解析、转换、丰富数据后再写入
Pipeline
Processor
Grok 解析
Enrich
🗂️ 索引(Index)与分片(Shard)
index: logs-2026 (3 主分片 × 1 副本 = 6 Shards)
分片路由公式
shard = hash(routing) % number_of_primary_shards
routing 默认为文档 _id,可自定义
🗄️ 底层存储结构
📁
Lucene Index
每个 Shard 是一个 Lucene 索引
📄
Segment
不可变文件,定期 merge 合并
🧠
Translog
WAL 预写日志,保障数据持久
⚡
Buffer
内存缓冲区,每秒 refresh 到段
✍️ 写入流程(Index Flow)
↓
2
(可选)经 Ingest Pipeline 预处理文档
↓
3
路由公式计算 → 转发到主分片 (Primary) 所在 Data Node
↓
4
写入 Translog + Memory Buffer,并行同步到所有副本分片
↓
5
所有副本 ACK 后,协调节点返回 200 OK
🔍 查询流程(Search Flow)
↓
2
Scatter 阶段:广播至所有相关分片(主/副均可读)
↓
3
各分片返回 doc_id + 评分(Query Phase)
↓
4
协调节点排序、截取 Top-K,再拉取完整文档(Fetch Phase)
↓
5
Gather 阶段:合并结果返回 Client
⚡ Elasticsearch Architecture · 后端架构师 · 2026