通关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
正文到此结束
最后修改:2025 年 07 月 02 日
如果觉得我的文章对你有用,请随意赞赏