1. 分片设计中主/副本分片规划、分片数量与容量估算、分片过多/过少的代价
Elasticsearch 的主/副本分片如何规划,分片数量与容量如何估算,分片过多/过少各有何代价?
- 主/副本分片规划
- 分片数量与容量估算
- 分片过多的代价
ES 索引由主分片(primary shard)与副本分片(replica shard)组成,主分片承担读写,副本分片提供容灾与读扩展。分片数量规划:取决于数据量、单分片容量与查询性能,通常按"总数据量 / 单分片目标容量(如 20-50GB)"估算主分片数,副本数按容灾与读需求设置(至少 1)。分片过多:每个分片都有元数据与开销,过多分片导致资源浪费、集群管理开销大、查询聚合开销增加、rebalance 慢。分片过少:单分片过大,查询与迁移慢,无法有效利用多节点并行,扩容受限。分片数量需在创建索引时确定(一旦创建不可改主分片数)。运维上需合理规划分片,避免过多或过少。
分片是 ES 的并行单元与容灾单元。主分片数决定数据切分粒度,副本数决定容灾与读扩展。分片过多/过少都是性能隐患,需按数据量与容量估算。主分片数创建后不可改,规划要谨慎。
# 创建索引并指定分片数
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' \
-d '{"settings":{"number_of_shards":5,"number_of_replicas":1}}'
# 查看分片分布
curl -s "localhost:9200/_cat/shards?pretty"