新余市网站建设_网站建设公司_导航菜单_seo优化
2026/1/16 10:48:46 网站建设 项目流程

一、ES 基础原理(必杀区)

1️⃣ ES 为什么快?

答题结构:

  • 倒排索引(词 → docId)
  • 不可变 segment(无锁读)
  • mmap + PageCache
  • 分片并行查询

2️⃣ 倒排索引和 B+Tree 的核心区别?

  • B+Tree:范围查询强
  • 倒排索引:全文搜索强
  • ES 先分词,再查词典

3️⃣ ES 为什么是近实时(NRT)?

  • refresh 才能被搜索
  • 默认 1s refresh
  • 可见 ≠ 已持久化

4️⃣ refresh / flush / commit 区别?

  • refresh:可搜索
  • flush:落盘 + 清 translog
  • commit:Lucene 层提交

5️⃣ update 在 ES 底层怎么实现?

  • delete + insert
  • 旧 doc 标记删除
  • merge 时物理清除

二、索引 & 写入(高频追问)

6️⃣ 写入一条数据发生了什么?

  • 协调节点路由
  • primary shard 写
  • 写 buffer + translog
  • 同步 replica

7️⃣ translog 的作用?

  • 防止宕机丢数据
  • 类似 MySQL WAL
  • flush 后清理

8️⃣ ES 会不会丢数据?

标准回答:

  • refresh 前可能丢
  • translog 保证 crash 恢复
  • ack=all 减少风险

9️⃣ 写入慢的常见原因?

  • refresh 频繁
  • shard 过多
  • merge 压力大
  • IO 瓶颈

🔟 写入优化手段?

  • bulk
  • 关闭 refresh
  • 调大 translog
  • 合理 shard

三、查询 & 搜索(必问)

1️⃣1️⃣ 查询为什么分 Query / Fetch 两阶段?

  • Query:算 score + docId
  • Fetch:取 _source
  • 减少网络 IO

1️⃣2️⃣ 深分页为什么慢?

  • 每个 shard 都算 from + size
  • 大量无效排序
  • O(n) 丢弃

1️⃣3️⃣ 深分页怎么解决?

  • search_after
  • scroll(导出)
  • 限制页数

1️⃣4️⃣ scroll 为什么不适合实时?

  • 基于快照
  • 不反映最新数据
  • 占用资源

1️⃣5️⃣ search_after 的原理?

  • 基于 sort 值
  • 无 offset
  • 必须唯一排序字段

四、打分 & 分词(加分项)

1️⃣6️⃣ ES 默认打分算法?

  • BM25
  • TF * IDF * norm

1️⃣7️⃣ keyword 和 text 区别?

  • keyword:不分词、精确匹配
  • text:分词、参与评分

1️⃣8️⃣ analyzer / tokenizer 区别?

  • analyzer = tokenizer + filter
  • 决定索引和查询行为

1️⃣9️⃣ 中文分词怎么选?

  • ik_smart(粗)
  • ik_max_word(细)
  • 精确字段用 keyword

五、分布式 & 架构(面试官最爱)

2️⃣0️⃣ shard 是什么?

一个 shard = 一个 Lucene Index


2️⃣1️⃣ shard 能不能改?

  • primary shard:不能
  • replica:可以

2️⃣2️⃣ shard 太多的问题?

  • 内存占用
  • 文件句柄
  • merge 开销

2️⃣3️⃣ 副本的作用?

  • 读扩展
  • 高可用
  • 故障转移

2️⃣4️⃣ 主分片挂了怎么办?

  • replica 提升为 primary
  • cluster 自动选举

六、工程 & 真实场景(决胜区)

2️⃣5️⃣ ES 为什么不适合事务?

  • 无强一致
  • 无回滚
  • NRT

2️⃣6️⃣ ES 和 MySQL 如何配合?

  • MySQL:主数据
  • ES:搜索
  • binlog / MQ 同步

2️⃣7️⃣ 如何保证数据一致性?

  • 最终一致
  • 重放机制
  • 定期校准

2️⃣8️⃣ ES 适合做主存储吗?

标准回答:

不适合,ES 是搜索引擎,不是事务型数据库


2️⃣9️⃣ ES 常见线上事故?

  • shard 爆炸
  • heap 爆
  • 大查询拖垮集群

3️⃣0️⃣ ES 排查问题思路?

  • 看 JVM heap
  • 看 GC
  • 看 slowlog
  • 看 segment & merge

七、你现在该怎么用这 30 问?

建议打法(很重要):

1️⃣ 每题准备 30 秒 + 2 分钟版本
2️⃣ 能画出 Index / Shard / Segment 结构
3️⃣ 至少能讲清 refresh + translog
4️⃣ 能说清深分页的本质

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询