首页/云/可观测性速查/索引、分片与副本基础
日志平台52 条

索引、分片与副本基础

索引由分片组成:主分片数量建索引时确定,副本数可动态调整;副本提供高可用并能分担读流量,但要占用额外存储与写入成本。

可观测性速查云更新于 2026-10-13

索引、分片与副本是什么

Elasticsearch 的索引由分片组成:主分片数量在建索引时确定,决定写入并行度与单索引的容量上限;副本是主分片的完整拷贝,数量可以随时调整,既提供高可用又能分担读流量。副本带来额外存储与写入成本,分片数量则直接影响集群元数据与合并压力,两者都需要按容量规划而非拍脑袋设定。

基本信息

主分片建索引时确定,之后不能直接改
副本可动态调整,每副本一份完整拷贝
分片规模建议单分片按 10-50GB 量级规划
查看命令_cat/indices、_cat/shards
调整副本PUT /<index>/_settings
影响面存储、写入成本、查询并行度

典型使用场景

  • 新索引设计时确定主分片数,避免后期重建索引迁移数据
  • 高峰期临时减少副本换取写入性能,低峰再调回
  • 用 _cat/shards 查看分片分布是否均衡,排查热点节点
  • 容量评估时核对单分片大小,避免出现超大分片拖慢恢复
  • 多节点集群通过副本实现节点故障时的数据可用性
  • 发现分片数过多导致集群状态更新缓慢时合并索引或调整规划

查看与调整

查看与调整
# 查看索引分片状态
GET /_cat/indices?v&s=store.size:desc
GET /_cat/shards/logs-app?v

# 动态调整副本数(主分片数建索引后不可直接改)
PUT /logs-app/_settings
{ "number_of_replicas": 0 }

# 查看未分配分片的原因
GET /_cluster/allocation/explain

概念对照

概念是否可改作用与代价
主分片建索引时定决定写入并行度与容量上限
副本分片可动态调整高可用与读分担,占额外存储
单分片规模间接控制过大恢复慢,过小碎片多
分片总数随索引增长过多会推高元数据与合并压力
分片数不是越多越好:单分片规模按 10-50GB 量级规划,能兼顾恢复速度与查询效率,避免碎片化与超大分片并存。
改副本数会触发大量数据复制与恢复,应避开写入高峰,并确认集群有足够的磁盘与网络余量。
单节点集群无法分配副本,健康状态长期为黄色属正常;要消除黄色需要在有第二个节点后再开副本。
主分片数只能通过重建索引或 shrink/split 改变,因此新索引的分片规划要在创建时就与容量增长曲线对齐。

易错点

  • 改副本数会触发大量数据复制与恢复,避开写入高峰操作
  • 分片数拍脑袋定太多会让集群元数据与合并压力上升,按容量规划
  • 主分片数建索引后不能直接改,规划失误只能重建索引,成本很高
  • 副本数设成 0 虽能提升写入,但失去高可用,节点故障时会直接丢数据可用性
  • 单分片过大(几十上百 GB)会让恢复与重分配耗时成倍增长

数据来源与参考

  • Elastic 官方文档 · Shards and replicas
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌