Elasticsearch权威指南:分布式环境下的文档创建、索引与删除操作解析

Elasticsearch权威指南:分布式环境下的文档创建、索引与删除操作解析

elasticsearch-definitive-guide The Definitive Guide to Elasticsearch elasticsearch-definitive-guide 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-definitive-guide

分布式写操作的基本原理

在Elasticsearch分布式系统中,文档的创建(create)、索引(index)和删除(delete)操作都属于写操作。这些操作有一个重要特点:必须先在主分片(primary shard)上成功执行,然后才能被复制到相关的副本分片(replica shards)上。

操作执行流程详解

让我们通过一个典型场景来理解这个过程的完整生命周期:

  1. 客户端请求阶段
    客户端向集群中的节点1(作为协调节点)发送创建、索引或删除文档的请求。

  2. 请求路由阶段
    节点1根据文档的_id值确定该文档属于分片0,然后将请求转发到当前负责分片0主分片的节点3。

  3. 主分片处理阶段
    节点3在主分片上执行请求操作。如果操作成功,它会并行地将请求转发到包含该分片副本的节点1和节点2。

  4. 副本同步阶段
    当所有副本分片都报告操作成功后,节点3向协调节点报告成功,最终协调节点将成功响应返回给客户端。

数据安全保证

当客户端收到成功响应时,意味着文档变更已经在主分片和所有副本分片上执行完成。这种机制确保了数据的可靠性和一致性,即使部分节点出现故障,数据也不会丢失。

高级控制参数

虽然Elasticsearch默认配置已经能提供良好的性能和可靠性,但它也提供了一些可选参数供高级用户进行微调:

一致性控制(consistency)

这个参数决定了在执行写操作前需要多少分片副本可用:

  • quorum(默认值):需要大多数分片副本可用,计算公式为:
    int((primary + number_of_replicas)/2) + 1

  • one:只需要主分片可用

  • all:需要主分片和所有副本都可用

重要说明
number_of_replicas指的是索引设置中指定的副本数量,而非当前活跃的副本数量。这意味着即使某些副本不可用,计算时仍会使用配置值。

超时设置(timeout)

当可用分片副本不足时,Elasticsearch默认会等待1分钟。可以通过此参数调整等待时间:

  • 100表示100毫秒
  • 30s表示30秒

单节点集群的特殊处理

考虑到实际部署情况,Elasticsearch做了一个智能处理:当number_of_replicas大于1时才会强制执行quorum要求。这意味着:

  1. 新索引默认有1个副本
  2. 但在单节点集群中,系统会自动放宽要求,允许操作继续执行
  3. 这种设计避免了单节点环境下的可用性问题

总结

理解Elasticsearch的分布式写操作机制对于构建可靠的应用至关重要。虽然系统提供了调整参数,但在大多数生产环境中,默认配置已经能够在性能和数据安全之间取得良好平衡。只有在特殊场景下,才需要考虑调整这些高级参数。

elasticsearch-definitive-guide The Definitive Guide to Elasticsearch elasticsearch-definitive-guide 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-definitive-guide

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邴联微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值