ES GET/MGET 设计理解

本文详细解析了Elasticsearch中的GET和MGET操作,包括它们的基本流程、如何处理读取请求以及在主副分片间的同步问题。讨论了MGET的批量查询逻辑,并强调了批量操作在性能优化中的重要性。GET/MGET的实时性在不同版本中的实现机制也进行了说明。

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

ES的读取分为GET和Search两种操作,这两种读取操作有较大的差异,本章我们主要分析下GET/MGET读取操作。

GET/MGET必须指定三元组:_index、_type、_id(http://127.0.0.1:9200/_index/_type/_id),也就是说,根据文档id从正排索引中获取内容。

注:ElasticSearch中同时保存了正排索引和倒排索引,对该知识不清楚的可以参考:

深入理解正排索引与倒排索引(设计思想和数据结构)

GET基本流程

搜索和读取文档都属于读操作,可以从主分片或副分片中读取数据。

读取单个文档的流程(图片来自官网)可如下图:

注:其中P->primary shard(主分片),R->replication shard (副分片)

步骤如下:

(1)客户端向NODE1发送读请求(此时NODE1作为协调节点

(2)NODE1是同文档ID来确定文档属于分片0,通过集群状态中的内容路由表信息获取分片0有三个副本数据,位于三个节点中,此时它可以通过将请求发送到任意节点,图上所示是将请求发送到NODE2。

(3)NODE2将文档返回给NODE1,NODE1将文档返回给客户端(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值