deepseek梳理java高级开发工程师es面试题
Elasticsearch 面试题及答案(高级 Java 开发工程师版)
基础概念
1. 解释 Elasticsearch 中的倒排索引是什么?为什么它比传统数据库更适合全文搜索?
答案:
倒排索引是一种将文档中的词项(token)映射到包含该词项的文档的数据结构。它由两部分组成:
- 词项字典(Term Dictionary):包含所有文档中出现过的词项
- 倒排列表(Posting List):记录每个词项出现在哪些文档及位置信息
优势:
- 快速查找:可以直接定位包含搜索词的文档
- 高效压缩:可以使用多种压缩算法减少存储空间
- 支持复杂查询:可以高效处理 AND/OR/NOT 等布尔操作
- 评分灵活:支持 TF-IDF、BM25 等评分模型
传统数据库使用 B-tree 索引,适合精确匹配但全文搜索性能差,而倒排索引专为文本搜索优化。
核心原理
2. 详细描述 Elasticsearch 的写入流程和近实时搜索原理
答案:
写入流程:
- 客户端发送文档到协调节点
- 协调节点通过路由确定主分片,转发请求
- 主分片执行以下操作:
- 验证文档
- 在内存中生成 Lucene 段(未提交)
- 写入事务日志(translog)
- 并行复制到所有副本分片(默认同步)
- 主分片确认所有副本成功后返回响应
近实时搜索原理:
- 新写入的文档首先存在于内存缓冲区
- 默认每