第 5 章 · 命中之路:一次查询的完整旅程 章节摘要:一次搜索从协调节点扇出到所有相关分片,各自查倒排表、算相关性分,再归并成全局排序——这是命中之路的主干。本章先解剖搜索请求的结构与两阶段执行,再把 Query DSL 从 match 一路讲到 bool 组合与 filter 上下文,最后整理命中结果:排序、分页、高亮与建议。读完你能解释"为什么这条排第一、分数 3.7 从哪来、深分页为什么慢"。 学习目标 阅读完本章,你应当能够: 画出一次搜索的两阶段执行图,说出 query then fetch 各阶段分片与协调节点的分工。 区分查询上下文与过滤上下文,解释 filter 不算分且结果可缓存的原因。
章节摘要:一次搜索从协调节点扇出到所有相关分片,各自查倒排表、算相关性分,再归并成全局排序——这是命中之路的主干。本章先解剖搜索请求的结构与两阶段执行,再把 Query DSL 从 match 一路讲到 bool 组合与 filter 上下文,最后整理命中结果:排序、分页、高亮与建议。读完你能解释"为什么这条排第一、分数 3.7 从哪来、深分页为什么慢"。
阅读完本章,你应当能够:
金句:查询上下文问"多匹配",过滤上下文问"匹不匹配"——前者算分,后者缓存,混用是性能与语义的双重浪费。
一次搜索请求的骨架:从路由到分片、两阶段执行、响应各字段含义、常见参数(尺寸、源过滤、超时)。地基打牢,后面的 DSL 才有处安放。
全文检索的主力家族与精确过滤的利器同场:match 的分词语义、短语匹配、term 的暗坑、range 的边界、bool 四种子句的分工,以及 filter 上下文的缓存红利。
命中之后的整理台:单字段与脚本排序、from 加 size 的深翻页陷阱、搜索后高亮的取舍、拼写建议器。产品经理眼里"搜索好不好用",一半取决于这一节。
三节是"骨架、灵魂、妆容"的关系:5.1 定请求的形,5.2 填查询的魂,5.3 修结果的形。5.2 的打分直觉依赖 3.2 的分词暗号——写入切出的词条决定 match 能命中什么;5.3 的排序依赖 3.1 的 keyword 子字段——文本排序必须落在整串形态上。命中之路处处回响着分词台的余音。
5.1 请求骨架与两阶段 ──► 5.2 DSL与打分 ──► 5.3 排序分页高亮 │ │ │ └─► 第6章 聚合同样走 └─► 第3章 分词暗号 └─► 第9章 搜索体验优化 两阶段执行
| 考核点 | 达标标准 | 对应小节 |
|---|---|---|
| 画两阶段图 | 画出 query 与 fetch 的分工,标明每阶段分片回传什么 | 5.1 |
| 读响应字段 | 解释 took、timed_out、total 的 relation、_score 为 null 的情形 | 5.1 |
| 上下文选型 | 给定业务条件,正确拆分 must 与 filter 并说明缓存收益 | 5.2 |
| 组合查询 | 用 bool 组合出"标题含退款且状态待处理且近七天"的请求 | 5.2 |
| 翻页方案选型 | 浅翻页、深翻页、全量导出三种场景各选对方案 | 5.3 |
| 高亮配置 | 限定字段与片段数,配出生产级高亮 | 5.3 |