当前位置: 首页 > news >正文

Elasticsearch 搜索的流程

        Elasticsearch 的搜索流程是一个分布式协作过程,主要包含 ‌查询阶段(Query Phase)‌ 和 ‌取回阶段(Fetch Phase)‌,默认采用 QUERY_THEN_FETCH 模式。以下是详细流程:

一、请求分发与路由
‌1.1 客户端请求发送‌
        客户端向集群中任意节点(成为‌协调节点‌)发送搜索请求,请求包含查询条件、目标索引等参数。
‌1.2 目标分片定位‌
        协调节点解析请求,根据索引路由策略(如哈希文档ID)确定所有需要查询的‌主分片或副本分片‌位置。请求被并行转发至目标分片所在的数据节点。
二、查询阶段(Query Phase)
‌2.1 分片本地搜索‌
        每个目标分片独立执行查询:
        使用 倒排索引‌ 匹配符合条件的文档 ID。
        计算文档相关性得分(如 BM25 算法)。
        根据排序规则(如得分、时间)生成‌优先级队列‌(Top-N 结果),仅存储文档 ID 和排序信息(非完整文档)。
2‌.2 返回中间结果‌
        各分片将优先级队列结果(文档 ID + 排序信息)返回给协调节点。
三、结果聚合与排序
‌3.1 全局结果合并‌
        协调节点聚合所有分片的中间结果:
        按全局排序规则(如相关性得分)对所有文档进行‌重新排序‌。
        根据分页参数(from/size)筛选最终的候选文档 ID。
四、取回阶段(Fetch Phase)
4.1  ‌获取完整文档数据‌
        协调节点向候选文档 ID 所在的分片发送‌多文档获取请求‌(Multi-Get)。
        各分片返回完整文档内容(包括 _source 字段)。
4.2 组装最终响应‌
        协调节点整合文档数据,补充高亮、聚合结果等附加信息,返回给客户端。
五、高级搜索模式
‌        DFS_QUERY_THEN_FETCH‌:
        在查询前增加‌全局词频统计‌步骤,解决分片间评分不一致问题,但性能较低。
关键流程总结

        注‌:若查询包含聚合(Aggregation),各分片会先计算‌局部聚合结果‌,协调节点再汇总生成全局聚合数据。

相关文章:

  • 最新发布 | “龙跃”(MindLoongGPT)大模型正式发布!龙跃而起,推动中国方案走向全球智能体前沿
  • 电脑的虚拟内存对性能影响大吗
  • [go] 垃圾回收源码解析
  • MCU双分区方案,如何优雅地获知当前运行分区?
  • 新高考需求之一
  • pyhton基础【15】函数进阶一
  • 从厨房到代码台:用做菜思维理解iOS开发 - Swift入门篇①
  • ADIOS2 介绍与使用指南
  • Vue3 + Vite + TypeScript SVG图标解决方案
  • 一款基于 React 的开源酷炫动画库
  • C指针总结复习(结合deepseek)
  • 71-Oracle Undo与Flashback管理(Guarantee设置)深度解析
  • 艾立泰数字化方案重塑汽车包装载具管理
  • oracle 表空间与实例妙用,解决业务存储与权限处理难题
  • C++11 static_assert(基于Boost库)从入门到精通
  • Halcon ——— OCR字符提取与多类型识别技术详解
  • STM32学习笔记
  • 全链接神经网络,CNN,RNN各自擅长解决什么问题
  • DataWhale-零基础络网爬虫技术(三、爬虫进阶技术)
  • 使用 catthehacker/ubuntu Docker 镜像部署 GitHub Actions 本地运行环境
  • 中国学校网站前台模板/智慧软文发布系统
  • 杭州知名的企业网站建设/seo是什么意思职业
  • 网站建设规划书感受/百度网页版进入
  • pc网站如何做移动网站/网站关键词怎么设置
  • 深圳做营销网站的公司哪家好/网络营销策划书ppt
  • 网站开发适合什么工作/网络营销案例有哪些