深入理解Elasticsearch:CRUD过程原理

1、Elasticsearch写原理 / 流程

(1)客户端发送请求写到任意一个节点,则他成为协调节点协调节点 ,对 document 进行路由,将请求转发给对应的 node(有 primary shard)

(2)实际的 node 上的 主分片 处理请求,然后将数据同步到副本分片

(3)协调节点 等到 主节点和所有 副本节点 都执行成功之后,最后返回响应结果给客户端。

2、Elasticsearch更新和 删除原理

  删除和更新都是写操作,但是由于 Elasticsearch 中的文档是不可变的, ES 利用 .del 文件 标记文档是否被删除,磁盘上的每个段都有一个相应的.del 文件。

(1)如果是删除操作,文档其实并没有真的被删除,而是在 .del 文件中被标记为 deleted 状态。该文档依然能匹配查询,但是会在结果中被过滤掉。

(2)如果是更新操作,就是将旧的 doc 标识为 deleted 状态,然后创建一个新的 doc

3、Elasticsearch搜索原理(Query Then Fetch)

(1)Query阶段

客户端发送请求读到任意一个节点则他成为协调节点,协调节点将搜索请求广播到所有的主分片或副本分片,每个分片在本地执行搜索并构建一个优先队列

接着每个分片返回各自优先队列中 所有文档 id 和 打分值 给协调节点,由协调节点进行数据的合并、排序、分页等操作,产出最终结果。

(2)Fetch阶段

协调节点根据 Query阶段产生的结果,去各个节点查询 文档Id 实际的 document 内容,通过对 文档id 进行哈希路由,将请求转发到对应的 node。最后由协调节点返回结果给客户端。

4、Elasticsearch高并发下读写一致性保障

(1)对于更新操作:可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值