搜索系列 · 第 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 篇全部完成。

相关推荐
JAVA面经实录9173 小时前
线上故障标准处理流程【完整版|面试背诵+生产落地】
java·面试·职场和发展
浪浪山_大橙子5 小时前
公司里的 AI,终于不只会聊天:我用 GPT‑6 把企业工作伙伴开源了
前端·后端·面试
无限码力5 小时前
华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解
华为od·面试·华为od面试真题·华为od面试手撕真题·华为od面试算法真题
乌暮6 小时前
JVM 原理与实践:从运行时数据区到线上故障排查
java·开发语言·jvm·后端·学习·面试
时间的拾荒人7 小时前
Qt 界面布局与容器控件详解:从分组框到布局管理器
开发语言·qt·面试
ShineWinsu9 小时前
对于Redis:ZSet类型的解析
数据库·c++·redis·缓存·面试·有序集合·zset
keke.shengfengpolang10 小时前
2026年财务经营分析校招技术能力拆解:SQL取数、Power BI看板、AI辅助分析,面试到底考什么
面试
王中阳Go10 小时前
简历写「QPS 提升 3 倍」,面试官问「怎么压测的」,我卡在并发数怎么定
人工智能·后端·面试
光影少年10 小时前
langchain与langgraph区别以及学习路线
elasticsearch·langchain·llm