通关Elasticsearch面试:核心原理+高频问题+实战加分技巧
1.elasticsearch 了解多少,说说公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
集群规模:共 15 个节点,其中:
- 3 个 Master 节点(专职选举与管理)
- 2 个 Coordinating 节点(主要用于处理查询和请求协调)
- 10 个 Data 节点(负责数据的存储与检索)
- ES 版本:使用的是 Elasticsearch 7.17(或者你实际使用的版本)
- 部署方式:Kubernetes 上 StatefulSet 部署,使用持久化存储(如 Ceph 或 SSD)
✅ 数据与索引设计:
- 数据总量:每天新增数据在 5000 万 \~ 1 亿条左右,当前历史数据总体量大约在 数百 GB 到 TB 之间,我们定期归档旧数据。
索引设计:
- 按业务通道 + 日期维度进行分索引,比如
log-<channel>-yyyy.MM.dd - 每天新建 20\~30 个索引,单索引控制在 10 分片(primary)+ 1 副本,这样便于并发写入和检索。
- 热数据保留 7 天在热节点,使用 Index Lifecycle Management (ILM) 自动迁移至温节点。
- 按业务通道 + 日期维度进行分索引,比如
✅ 分片设计与调优:
分片规划:
- 使用
shrink机制对冷数据索引做分片合并,减少 segment 数量,降低存储与查询开销 - 分片数量控制在每节点不超过 50 个活跃分片,避免集群不稳定(根据社区推荐 best practice)
- 使用
性能调优:
写入方面:
- 使用 Bulk API 写入,单批控制在 5MB\~10MB,避免堆积和 GC 压力
- 减少 refresh 频率(
index.refresh_interval: 30s)来提升写入吞吐
查询方面:
- 使用 keyword 字段做聚合/过滤,text 字段做全文检索
- 重要查询加 caching,比如 aggregations、scroll、search\_after 分页
存储方面:
- 启用
doc_values供排序和聚合使用 - 禁用
_all字段,节省空间 - 热节点采用高性能 SSD,冷节点使用普通机械盘
- 启用
✅ 使用场景:
- 日志系统:业务日志、接口请求日志、告警记录、链路追踪等
- 全文检索:搜索业务关键词,如歌华搜索节目,走的就是es