理解ES数据查询流程:从Search到Get/MGet
需积分: 49 200 浏览量
更新于2024-09-07
收藏 82KB MD 举报
本文主要介绍了Elasticsearch (ES) 的数据查询流程,特别是Search操作与Get/MGet的区别,以及查询和取回两个阶段的具体步骤。
Elasticsearch 是一个分布式、实时的搜索和分析引擎,广泛用于大数据分析和全文检索。在ES中,Search API 允许用户基于条件查询数据,而不像Get和MGet API那样,需要明确指定文档的_index, _type和_id。Search操作可以不知道_id,而是根据查询条件从多个文档中筛选结果。
查询阶段(Query Phase):
1. 客户端向某个节点(Node)发送Search请求。
2. 节点创建一个大小为`from`加`size`的空优先级队列,用于存储最终结果。
3. 请求被转发到所有相关索引的分片(primary或replica),分片们在本地执行查询。
4. 分片返回其排序后的前`from+size`个文档的ID和排序值。
5. 协调节点根据返回的结果进行全局排序,构建最终的优先级队列。
取回阶段(Fetch Phase):
查询阶段已确定了哪些文档满足条件,但实际的文档内容还需要在取回阶段获取。协调节点向包含这些文档的分片发送请求,请求获取实际的文档内容。分片返回文档内容,协调节点再组装成完整的搜索结果返回给客户端。
Search操作在处理大量数据和复杂查询时具有优势,因为它能并行处理多个分片,提高了效率。而Get和MGet操作则更适合于获取已知ID的单个或批量文档。
在分布式环境中,多副本的存在是为了提高可用性和容错性。每个搜索请求可以被不同副本处理,这样负载得以分散,提高了系统的吞吐量。
总结来说,Elasticsearch 的Search查询流程涉及到了分布式查询的策略,包括查询阶段的分布式执行和取回阶段的文档内容获取。这种设计使得ES能够在大规模数据集上提供高效的全文搜索和数据分析能力。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-11-23 上传
2021-10-08 上传
2019-10-22 上传
2021-09-10 上传
2019-11-28 上传
2024-01-30 上传
都系
- 粉丝: 0
- 资源: 26
最新资源
- 对Atom-IDE的Python语言支持:atom::snake:-JavaScript开发
- Python库 | flaskmodificado-0.1.tar.gz
- ThoughtFlow-Sys-开源
- matlab开发-parTicToc.zip
- weixin034微信课堂助手小程序+php(源码+部署说明+演示视频+源码介绍+lw).rar
- django-sphinxql:Django中的Sphinx搜索
- 创业计划书-电梯项目可行性研究报告(目录)
- Dubhe-master.zip
- 基于ASP上网导航设计(论文+源码+毕业设计).rar
- weixin083校园工会体育报名系统+ssm(源码+部署说明+演示视频+源码介绍+lw).rar
- (【收网店学徒vx_25315702】)30套.zip
- Autodesk AutoCAD .Net Interop-开源
- matlab开发-地下磁感应通信和定位的影响和矿物.zip
- 创业计划书-艺术培训策划书
- scribe.js-amqp-aggregator:AMQP + Scribe.js 用于轻量级日志管理
- 一个集中式系统,用于在网页上的任意位置显示和设置焦点指示符。-JavaScript开发