社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Elasticsearch

【AI加油站】AI面试专题二十:Elasticsearch的面试题资料(附PDF下载)

人工智能产业链union • 1 月前 • 63 次点击  
图片
核心总结

Elasticsearch面试题 的核心内容整理:


上篇:ES基础与实践

1. ES集群架构与调优

  • 集群规模:13节点,20+索引,每日1亿+数据(150GB/通道),10分片。

  • 调优手段

    • 设计阶段:按日期滚动索引(rollover API)、冷热分离(SSD+shrink)、生命周期管理(curator)、合理分词器与Mapping。

    • 写入调优:副本数置0、禁用refresh、bulk批量写入、自动生成ID。

    • 查询调优:禁用wildcard/terms、优先keyword类型、路由优化。

2. 倒排索引

  • 原理:词到文档的映射表(词典+倒排表),基于FST数据结构(空间压缩+快速查询)。

3. 大数据量调优

  • 动态索引:模板+时间滚动(避免单索引过大)。

  • 存储:冷热分离,冷数据定期force_merge/shrink。

  • 部署:动态扩容节点(需前期合理规划主节点)。

4-6. 核心机制

  • Master选举:候选节点(master:true)通过节点ID排序,需满足min_master_nodes防脑裂。

  • 文档写入:协调节点→路由分片(基于文档ID哈希)→主分片+副本分片并行写入。

  • 搜索过程:Query阶段(分片本地查询→全局排序)+ Fetch阶段(取回文档)。

7. Linux优化

  • 关闭swap、堆内存≤32GB、文件句柄数(64k)、RAID10存储。

8. Lucene结构

  • 索引(分词→倒排表)与搜索(读取索引→打分)流程。


下篇:进阶与运维

1. 更新/删除文档

  • 不可变性:标记.del文件,段合并时清理旧版本。

2. 搜索优化

  • Query Then Fetch:分片本地查询→全局排序→取回文档。

  • DFS模式:预查询Term频率提升评分准确性(牺牲性能)。

3. 倒排索引查询

  • 通过Lucene索引文件(词典+倒排表)定位词对应的文档。

4. 部署优化补充

  • 硬件:SSD优先、多核CPU、单数据中心部署。

  • JVM:避免swap、合理分配heap(≤32GB)、单播发现(unicast)。

5. GC与内存

  • 监控:segment内存、缓存(field/filter/bulk queue)、避免大结果集(scan&scroll)。

  • circuit breaker:防止内存溢出。

6. 大数据聚合

  • Cardinality度量:基于HLL算法近似去重,平衡精度与内存。

7. 并发一致性

  • 写操作:版本号乐观锁、quorum一致性级别。

  • 读操作:sync复制(默认)或指定主分片查询(_preference=primary)。

8. 监控工具

  • Marvel+Kibana:实时监控集群健康与性能。

9-10. 电商搜索架构

  • 技术栈:Elasticsearch+word2vec(个性化搜索/相似商品推荐)。

  • 局限:word2vec仅处理时序数据,需结合用户偏好优化。

11-12. 高级功能

  • 字典树(Trie):空间换时间,前缀匹配优化(中文用哈希表存储子节点)。

  • 拼写纠错:编辑距离+BK树(递归查找相似词)。


速记关键词

  • 调优:冷热分离、滚动索引、bulk写入、force_merge。

  • 选举:节点ID排序、min_master_nodes防脑裂。

  • 搜索:Query+Fetch、DFS模式、倒排索引+FST。

  • 运维:SSD、JVM堆≤32GB、监控Marvel、GC优化。

本书免费下载地址


    关注微信公众号“人工智能产业链union”回复关键字“AI面试20”获取下载地址。

往期推荐:
【AI加油站】AI面试专题一:BIO,NIO,AIO,Netty面试题(附下载)
【AI加油站】AI面试专题二:Git常用命令面试题(附下载)
【AI加油站】AI面试专题三:Java常用面试题(附下载)
【AI加油站】AI面试专题四:Linux系统的面试题集(附下载)
【AI加油站】AI面试专题五:Memcached面试题集(附下载)
【AI加油站】AI面试专题六:MyBatis框架的面试题(附下载)
【AI加油站】AI面试专题七:MySQL相关的面试题资料(附下载)
【AI加油站】AI面试专题八:Netty面试题资料(附下载)
【AI加油站】AI面试专题九:Nginx的面试题资料(附下载)
【AI加油站】AI面试专题十:RabbitMQ的面试题资料(附下载)
【AI加油站】AI面试专题十一:Redis的面试题资料(附PDF下载)
【AI加油站】AI面试专题十二:Spring的面试题资料(附PDF下载)
【AI加油站】AI面试专题十三:Apache Tomcat的面试题资料(附PDF下载)
【AI加油站】AI面试专题十四:Zookeeper的面试题资料(附PDF下载)
【AI加油站】AI面试专题十五:《阿里巴巴Java开发手册》终极版的面试题资料(附PDF下载)
【AI加油站】AI面试专题十六:大数据技术面试题资料(附PDF下载)
【AI加油站】AI面试专题十七:Java并发多线程面试题资料(附PDF下载)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/184609
 
63 次点击