Elasticsearch Fetch阶段面试题
Elasticsearch Fetch阶段面试题 🚀
目录
- 基础原理
- 性能优化
- 错误排查
- 场景设计
- 底层机制
- 总结
基础原理
🔍 面试题1:基础原理
题目:
请描述Elasticsearch分布式搜索中Query阶段和Fetch阶段的工作流程,为什么需要将搜索过程拆分为这两个阶段?
查询流程:
阶段 | 步骤 | 数据传输 |
---|---|---|
Query阶段 | 1️⃣ 协调节点向所有相关分片发送查询请求 2️⃣ 各分片在本地执行查询 3️⃣ 协调节点合并结果,生成全局排序 | 仅传输文档ID和排序值 |
Fetch阶段 | 1️⃣ 协调节点向对应分片发送GET请求 2️⃣ 分片返回完整文档内容 3️⃣ 协调节点组装最终结果 | 传输完整文档内容 |
拆分原因:
-
减少网络传输 📉
- Query阶段仅传输ID和排序值
- 避免传输无关文档内容
-
并行优化 ⚡
- Query阶段可并行执行
- Fetch阶段按需获取数据
性能优化
⚡ 面试题2:性能优化
题目:
在Fetch阶段,如何避免获取大量文档导致的性能问题?列举3种优化手段并说明原理。
优化手段:
-
Source Filtering 🔍
GET /products/_search {"_source": ["n