搜索系列 · 第 08 篇——面试收官:高频题与全景总结

把整个系列沉淀成一张知识地图

目 录

一、导读

二、高频面试题(基础类)

三、高频面试题(架构类)

四、高频面试题(场景类)

五、答题框架示范

[5.1 框架一:为什么 ES 检索快](#5.1 框架一:为什么 ES 检索快)

[5.2 框架二:ES vs 关系库怎么选](#5.2 框架二:ES vs 关系库怎么选)

六、搜索系列全景总结

一、导读

作为搜索系列收官篇,本讲把前七讲沉淀为一张「面试知识地图」:按基础、架构、场景三类整理高频面试题与答题要点,提供两套可套用的答题框架,最后给出系列全景总结。

二、高频面试题(基础类)

|-------------------|-----------------------------------------------------|
| 问题 | 答题要点 |
| 什么是 Elasticsearch | 基于 Lucene 的分布式 RESTful 搜索引擎,以 JSON 文档组织数据,倒排索引毫秒级检索 |
| 倒排索引是什么 | 以词项为核心记录出现在哪些文档,与正排相反,查词直接定位文档 |
| 为什么是近实时 | 写入先进内存缓冲 + translog,默认约 1 秒 refresh 生成可搜索段 |
| text 与 keyword 区别 | text 分词建倒排用于全文检索,keyword 不分词精确匹配、过滤、聚合 |
| 索引 / 文档 / 分片 / 副本 | 索引=文档集合,文档=JSON 单元,分片=水平扩展物理单元,副本=冗余与读扩展 |
| BM25 如何打分 | 在词频与文档长度间平衡,IDF 抑制高频词、长度归一化惩罚稀释,默认 k1=1.2/b=0.75 |

三、高频面试题(架构类)

|------------|---------------------------------------------------------------------------|
| 问题 | 答题要点 |
| 节点有哪些角色 | master / data / coordinating / ingest 等,node.roles 指定 |
| 集群如何形成 | cluster.name + discovery.seed_hosts + cluster.initial_master_nodes 互相发现选主 |
| 分片如何路由 | shard = hash(routing) % number_of_primary_shards |
| 近实时引擎怎么工作 | buffer + translog,refresh 生成段、flush 落盘,后台 Tiered 段合并 |
| 如何水平扩展 | 加节点自动重新平衡分片,主分片+副本共同承载 |
| 写入一致性怎么保证 | 主分片写后同步副本,wait_for_active_shards 控制确认 |
| 为什么主分片不可修改 | 路由依赖分片数取模,改后重哈希需重建(reindex) |

四、高频面试题(场景类)

|---------------------|-----------------------------------------------------|
| 问题 | 答题要点 |
| 为什么用 ES 不用 MySQL 搜索 | 倒排 + 分布式并行,亿级毫秒;LIKE/FULLTEXT 有限,大数据量秒级超时 |
| 查询变慢怎么排查 | _cat/shards 看分片、线程池 rejected、Profile API 定位热点子句、慢日志 |
| 深分页慢怎么办 | 改用 search_after 游标翻页,避免 from 过大 |
| 映射爆炸怎么防 | 收敛动态映射、限制 total_fields.limit、显式定义 Mapping |
| 数据量增长怎么办 | ILM 冷热分离 + 合理分片 + 滚动索引(rollover) |
| 与关系库如何分工 | 关系库做事务源,ES 做全文检索、日志、实时聚合,互补融合 |

五、答题框架示范

5.1 框架一:为什么 ES 检索快

分四层递进回答:存储(倒排索引以词项映射文档)→ 近实时(buffer + 段,约 1 秒可见)→ 分布式(分片并行 + 协调节点归并)→ 落地(亿级 LIKE 秒级 vs ES 毫秒级)。体现「以词项为本 + 分布式并行」的检索设计哲学。

5.2 框架二:ES vs 关系库怎么选

先点明边界:全文检索、日志、实时聚合适合 ES;强事务与复杂 JOIN 适合关系库。再给取舍:查询是全文与聚合 → ES;需要 ACID 事务 → 关系库。最后强调融合:关系库作数据源,ES 作搜索与分析底座,双写互补而非替代。

六、搜索系列全景总结

从认知入门到面试收官,本系列形成完整闭环,可凝练成一条知识链:

  • 认知:倒排索引、近实时、分布式定位。
  • 架构:Lucene 段引擎、节点角色、分片路由三层设计。
  • 原理:倒排索引、分词映射、BM25、段管理。
  • 部署:内网落地 Elasticsearch 集群,含一键脚本。
  • 选型:与 Solr / OpenSearch / 关系库全文横评。
  • 避坑:映射、分片、写入、查询陷阱。
  • 调优:写入、生命周期、查询、监控体系。
  • 面试:高频题与答题框架。

至此,搜索系列 8 篇全部完成。

相关推荐
SailingCoder6 小时前
【封闭结束1】端到端交付:Agent 一次请求如何走完全链路
前端·安全·ai·面试·agent·harness
Interview Aid1127 小时前
Uber Interview Process 完整指南:面试流程、OA 真题与 VO 备考
面试·职场和发展
zhangminghuan9 小时前
前端面试应对技巧
前端·面试·职场和发展
core51211 小时前
Elasticsearch 车牌号片段搜索:n-gram 倒排索引实战方案
elasticsearch·n-gram·索引·倒排索引·号牌·片段
এ慕ོ冬℘゜11 小时前
ES Promise.all/ Promise.race
前端·javascript·elasticsearch
Warolitbos11 小时前
【数据库】SQL进阶15题,窗口函数/索引/事务一页速查
数据库·sql·学习·mysql·面试
hunter_07613 小时前
App 被苹果 4.3 拒绝怎么办?从官方条款到整改、沟通与申诉
面试·代码规范
十年Java程序媛13 小时前
Java 面试常问 this、super:构造方法调用顺序避坑
java·开发语言·spring boot·面试·个人开发
ZhengEnCi13 小时前
MCP与Function Calling怎么选:大模型工具调用三种方式的面试级对比
面试·llm·mcp
BreezeJiang13 小时前
闭包和 useState 是两个知识点?你可能只学了半条作用域链
前端·面试