Elasticsearch的shard机制

本文详细探讨了Elasticsearch的shard机制,包括primary和replica shard的角色与功能,自动负载均衡特性,以及如何通过调整shard数量来优化索引性能和容错能力。深入分析了shard的分布原则,master选举过程,以及读写请求的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1):index包含多个shard

(2):每个shard都是一个最小的工作单元,承载部分的数据,Lucene实例,完整的简历索引和处理请求的能力

(3):增减节点时,shard会自动在nodes中负载均衡

(4):primary shard和replica shard,每一个doc只会存在某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard中

(5):replica shard是primary shard的副本,负责容错,以及承担读请求负载

(6):primary shard 的数量在创建索引的时候就固定了,replica shard的数量可以随时修改

(7):primary shard的默认数量是5,replica shard默认是1,默认有10个shard,其中5个primary shard以及5个replica shard

(8):容错,primary shard和replica shard不能和自己的replica shard 放在一个节点中(这样规定是为避免节点宕机的时候,primary shard和replica shard数据都都丢失,起不到容错的作用),但是可以和其他的primary shard的replica shard放在同一个节点中 .

(9)、master的选举,primary shard宕机后,新master将某个replica shard提升为primary shard。重启宕机node,master copy replica到该node,使用原有的shard并同步宕机后的修改。原有的primary shard降级为replica shard

(10)、读写请求

### 关于ElasticSearchShard Size的理解 在Elasticsearch中,并不存在直接名为`shard_size`的参数用于配置分片大小。实际上,分片的大小是由多个因素共同决定的,包括但不限于文档的数量、每条记录的平均体积以及存储这些数据所需的元数据量。 #### 影响分片实际大小的因素 - **文档数量**:更多的文档通常意味着更大的分片。 - **单个文档尺寸**:较大的文档也会增加分片的整体规模。 - **索引模式复杂度**:复杂的映射结构可能会占用更多空间来保存额外的信息[^2]。 为了间接控制分片的实际大小,在创建索引时可以考虑以下几个方面: 1. **预估合理的初始分片数目** 可以通过估算预期的数据总量除以理想的单个分片最大容量(一般建议不超过几十GB),从而得出合适的初始分片数目的设定。这有助于防止因过早达到硬件资源极限而导致性能下降的情况发生。 2. **利用rollover API实现动态管理** 当前版本提供了Rollover机制允许基于条件自动滚动创建新的索引,这样可以在不中断服务的情况下灵活应对不断增长的数据流。例如当现有索引内的总字节数达到了指定阈值之后就会触发新索引的建立过程。 3. **优化写入操作频率与批量提交策略** 减少不必要的更新请求次数并通过适当增大批次处理量的方式降低频繁刷新带来的开销,进而影响到最终形成的分片文件大小。 ```json POST /_aliases { "actions" : [ { "add" : { "index" : "my-index-write", "alias" : "my-index-read" } }, { "remove_index" : { "index" : "old-index-name" } } ] } ``` 此命令展示了如何使用别名切换当前正在写的索引来支持rollover功能的一部分逻辑。 4. **定期执行force merge操作** 这一措施可以帮助压缩已存在的段落减少碎片化现象的发生,使得后续新增加的内容更容易被合理分配至各个现有的物理分区当中去。 ```bash POST my-index/_forcemerge?max_num_segments=5 ``` 上述命令将尝试把目标索引内部的所有Lucene segment合并成最多五个大segment,以此方式有效减小了整体所占的空间并提高了检索效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值