面试知识库

ElasticSearch 高频速查#

核心概念一句话#

题目一句话
ES架构基于 Lucene,Index→Shard→Document;Master 管元数据,Data 存数据
倒排索引词项→文档列表;FST 词典+Posting List;Delta+FOR/PFOR 压缩(Roaring 用于 filter 缓存)
分词器Char Filter→Tokenizer→Token Filter;中文用 IK(建索引 max_word,查询 smart)
查询DSLQuery 打分/Filter 不打分可缓存;bool(must/should/filter/must_not);BM25 评分
分片副本hash(routing)%shard_num 路由;Primary 数不能原地改(reindex/Split/Shrink);Replica 高可用+读扩展
集群选主7.0 起借鉴 Raft 的集群协调子系统;3 专用 Master;Green/Yellow/Red 三色健康
数据同步Canal+Kafka+Consumer 写 ES;主键幂等;alias 切换零停机
性能调优写入(bulk/关refresh/关副本);查询(filter/routing/search_after);堆不超压缩指针阈值(约26~30GB,看启动日志)
聚合查询Bucket 分桶+Metric 算数+Pipeline 再算;基于 doc_values 列式存储

记忆锚点速查#

主题口诀
写入流程写 Primary → 同步 Replica → refresh(1s) 可搜索
查询两阶段Query(各出候选) → Fetch(取文档)
调优写入批量 + 延刷 + 关副本
调优查询filter缓存 + routing定向 + search_after翻页
数据同步Canal听binlog → Kafka中转 → 主键幂等
分片规划单片 1050GB,主备分开,堆不超压缩指针阈值(约2630GB)
深分页search_after 逐页翻(from+size 10000+ 必爆)

对比速查#

ES vs MySQL
倒排索引 vs B+树
近实时(1s) vs 实时
无事务、JOIN 能力有限(nested/parent-child/ES
全文搜索+聚合 vs 精确查询+事务
主分片数不能原地改(Split/Shrink/reindex) vs 分区可调