分片与副本
本章定位:分片是 ES 分布式架构的核心。理解主分片和副本的读写流程、分配策略,才能正确规划集群。
定义与作用
主分片(Primary Shard):数据写入的第一目标,数量在创建索引时确定且不可修改。 副本分片(Replica Shard):主分片的完整拷贝,提供数据冗余和读负载分担。
核心规则:主分片与副本永远不在同一节点。
完整示例:白歌的分片规划
# 3 节点集群,students 索引规划
PUT /students
{
"settings": {
"number_of_shards": 6, # 主分片 = 数据节点数 × 期望单节点分片数
"number_of_replicas": 1 # 副本 ≥ 1 保证 HA
}
}
写流程
协调节点 → hash(routing) % 6 → 目标主分片(P2 on node-3)
→ 写入 P2 → 并行同步到副本(R2 on node-1)
→ 等全部副本完成 → 返回 200
读流程
协调节点 → 请求任一可用分片(P or R)→ 轮询(Round Robin)
小结
主分片数创建后不可改(取模路由),需 Reindex。副本数可动态调整。公式:主分片数 ≈ 数据节点数 × 1~3,副本数 ≥ 1。