# 分片与副本

URL: https://caijiao.org/elasticsearch/01.intro/10.shard-replica
Source: docs/elasticsearch/01.intro/10.shard-replica.md
Description: 本章介绍 Elasticsearch 的分片（Shard）和副本（Replica）概念及配置，帮助理解其高可用性和水平扩展能力。

Elasticsearch 作为分布式搜索引擎，利用分片和副本机制实现数据的高可用与水平扩展。理解这两个概念对于索引设计和集群管理至关重要。

## 1. 分片（Shard）

索引可以被拆分成多个分片，每个分片是一个独立的 Lucene 索引，存储索引数据的一个子集。分片使得索引可以分布在多个节点上，实现并行处理。

- **主分片（Primary Shard）**：负责写入和索引数据的主要分片。
- **分片数量**：创建索引时指定，创建后不可更改。

## 2. 副本（Replica）

副本是主分片的拷贝，提供数据冗余和查询负载均衡功能。副本分片保证在主分片发生故障时数据不会丢失。

- **副本数量**：可以动态调整，推荐至少配置1个副本。

## 3. 分片与副本配置示例

```json
PUT /my-index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}
````

## 4. 工作原理

* 写入数据先写入主分片，再同步到副本分片
* 查询请求会被路由到主分片或副本分片，提高并发性能
* 当节点故障时，副本分片可升级为主分片，保障数据安全

## 5. 设计建议

* 分片数量应根据数据量与节点数合理规划，避免分片过多导致资源浪费
* 副本数量影响数据安全与查询性能，生产环境建议至少设置1个副本
* 扩展时可增加节点，Elasticsearch 会自动重新分配分片

---

掌握分片与副本机制，有助于构建稳定、高效的分布式 Elasticsearch 集群，满足业务的扩展和高可用需求。
