ElasticSearch面试题


ES 是什么?和 Lucene 什么关系?

ES 是基于 Lucene 封装的分布式搜索引擎,提供全文检索、数据分析。
Lucene 是底层的检索库,ES 把它做成了分布式、易用、高可用的服务。

ES的核心概念:index、document、shard、replica

index:相当于数据库的库
document:一条数据,相当于行
shard:分片,把索引拆分成多个块,提高并发和容量
replica:副本,备份数据,提高可用性,分担查询压力

什么是倒排索引?

倒排索引就是关键词对应文档 ID,而不是文档对应关键词。
这样搜关键词时能快速定位到哪些文档包含它,是 ES 快的核心原因。

​ElasticSearch中match和term的区别

match 分词,适用于 text 类型字段,适用于模糊匹配
term 不分词,适用于 keyword 类型字段,适用于精确匹配

text 和 keyword 区别?

text:会分词,用于全文搜索
keyword:不分词,用于精确匹配、排序、聚合

ES 为什么查询快?核心是什么?

答:核心是倒排索引,按关键词匹配文档,无需全表扫描;项目均用 IK 分词器,适配专业词汇,提升检索准确性

ES 怎么实现多维度筛选 + 检索提速?

答:筛选字段建 keyword 索引,使用 bool 查询:must 放关键词检索,filter 放多维度筛选条件(filter 不参与评分且可缓存);项目中合理设置分片,将热点数据预热至内存,保证检索响应 < 500ms。

ES 怎么性能优化

  1. 怎么提高写入速度?
    用 bulk 批量写入
    调大 refresh_interval,减少段生成
    写入时临时关掉副本,写完再开
    提前定义 mapping,不动态创建字段
  2. 怎么提高查询速度?
    能用 filter 就不用 query,filter 会缓存
    聚合、排序用 keyword,不用 text
    深分页用 search_after 或 scroll,不用 from+size
    只查需要的字段,别全返回
  3. 分片怎么设?
    单分片建议 10~50GB
    分片太少:并发上不去
    分片太多:管理开销大,查询慢

MySQL 数据怎么同步到 ES?

主流用 Canal 监听 binlog,实时同步到 ES。
也可以定时任务增量同步,或业务双写。

什么是冷热分离?

热数据:放高性能节点,高频读写
冷数据:放低配节点,只查不写
用 ILM 生命周期自动管理。

集群加节点会发生什么?

ES 会自动分片重平衡,把数据均匀分到新节点,提高整体性能。

慢查询怎么排查?

开慢查询日志
用 profile 看每一步耗时
看节点负载、线程、分片状态

​ElasticSearch 的常见问题与解决方案

  • ​数据不一致问题
    ​原因:副本同步延迟或节点故障。
    ​解决:监控副本状态,确保 number_of_replicas 合理,避免网络分区。
  • ​查询性能瓶颈
    ​原因:全表扫描、未命中索引。
    ​解决:使用 _explain 分析查询计划,优化索引和查询语句。
    ​- 集群脑裂(Split Brain)​
    ​原因:网络分区导致多个主节点。
    ​解决:配置 discovery.zen.minimum_master_nodes 至少为 (number_of_master_nodes / 2) + 1。

ElasticSearch 是分布式搜索与分析领域的核心工具,掌握其核心原理(倒排索引、分片副本)、查询优化(聚合、路由)、集群管理(高可用、监控)及故障排查是面试成功的关键。
实际应用中需结合业务场景设计合理的索引策略,并通过性能调优(JVM、分页、缓存)保障系统稳定性。

ElasticSearch 集群如何搭建的

ElasticSearch7.10.2 集群:
集群采用 3 主 2 从架构,主节点负责分片管理和写操作,从节点负责读操作和容灾,所有节点统一配置内核参数、禁用透明大页,保证集群稳定性;
创建课程索引时指定3 主分片 + 1 副本,分片均匀分配到主节点,副本分配到从节点,同时安装 IK 分词器实现中文全文检索,设置 1s 刷新间隔实现数据实时索引;
项目中通过 Spring Data Elasticsearch 对接集群,使用keyword做精确查询、text+IK做模糊检索,结合动态加权排序算法,实现课程 / 名师 / 知识点多维度检索,搜索响应时间控制在 500ms 内;
同时做了批量操作、热点缓存、冷热数据分离等优化,适配 10 万 + 课程数据的高并发检索需求,高峰期系统稳定运行。


文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录