Primary shard chia dữ liệu để scale ngang; replica là bản sao của primary, phục vụ HA và tăng throughput đọc.
json
PUT /products
{ "settings": { "number_of_shards": 3, "number_of_replicas": 1 } }
// 3 primary + 3 replica = 6 shard, chiu duoc mat 1 nodenumber_of_shards không đổi được sau khi tạo index — muốn đổi phải reindex. number_of_replicas thì đổi nóng được.
Guideline của Elastic: mỗi shard 10–50 GB, và giữ dưới ~20 shard trên mỗi GB heap của node.
Lỗi phổ biến nhất là over-sharding: index 2 GB mà để 20 shard. Mỗi shard là một Lucene index tốn heap và file handle riêng, nên chia nhỏ quá làm cluster chậm hẳn chứ không nhanh hơn.
Với dữ liệu tăng theo thời gian (log, event), đừng chỉnh shard count mà dùng data stream + ILM để tự rollover sang index mới.