面试宝典之ElasticSearch面试题

E01、什么是倒排索引?

ES分词器通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这种建立索引的方式叫倒排索引。

当数据写入 ES 时,数据将会通过 分词 被切分为不同的term,ES 将term 与其对应的文档列表建立一种映射关系,这种结构就是 倒排索引。如下图所示:

E02、ES脑裂是怎么回事?(扩展)

脑裂问题,就是同一个集群中的不同节点,对于集群的状态,有了不一样的理解。

由于并发访问量的提高,导致了我们两个节点的集群(分片数默认为5,副本为1,没有固定的master,都是集群中的节点又做data又做master)状态变成了red,出现了大量的坏片,并且坏掉的都是主分片及其副本。分析发现,是ES集群出现了脑裂问题(俗称精神分裂),即**集群中不同的节点对于master的选择出现了分歧,出现了多个master竞争,导致主分片和副本的识别也发生了分歧,对一些分歧中的分片标识为了坏片。**

理解思路
  • 原因1:网络问题,导致由多个主
  • 原因2:主节点负载过大

E03、"脑裂"问题是怎么形成的?(扩展)

1.网络问题:集群间的网络延迟导致一些节点访问不到master,认为master挂掉了从而选举出新的master,并对master上的分片和副本标红,分配新的主分片

2.节点负载:主节点的角色既为master又为data,访问量较大时可能会导致ES停止响应造成大面积延迟,此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点。

3.内存回收:data节点上的ES进程占用的内存较大,引发JVM的大规模内存回收,造成ES进程失去响应。

E04、脑裂问题如何解决?(扩展)

1、减少误判。discovery.zen.ping_timeout节点状态的响应时间,默认为3s,可以适当调大,减少误判。

2、选举触发。discovery.zen.minimum_master_nodes:1,该参数是用于控制选举行为发生的最小集群主节点数量。增大该参数,这样参与选举的节点增多,减少选举。

3、角色分离:即master节点与data节点分离,限制角色。

主节点配置为:

node.master: true node.data: false

从节点配置为:

node.master: false node.data: true

E05、ES如何添加自定义词库、热更新词库?(扩展)

我们项目中使用中文分词器IK分词器。

1、在ik插件对应的配置文件目录下创建一个自定义词库文件 my.dic。直接在文件中添加词语即可,每一个词语一行。

2、修改ik的IKAnalyzer.cfg.xml配置文件。

3、将修改好的IK配置文件复制到集群中的所有节点中。

4、重启ES验证一下自定义词库的分词效果。

E06、ES如何分页?

默认情况下,不加from,size的话,ES会返回前10条记录。加上from,size就会查询指定的条数。其中from代表起始行号,size代表查询行数。

1、深度分页(from+size)

2、快照查询(scroll)

3、Search After

相关推荐
尾善爱看海8 小时前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
June bug12 小时前
【HCIA- AI(正课)】3.1.人工智能业务流程
职场和发展
DeepAgent13 小时前
AI Agent 面试篇(02):面试路线总览——每一关考什么、题什么样、要准备什么
面试·agent
颜挺锐14 小时前
如何轻松通过性能测试面试之第十一篇:如何判断应用的最大处理能力
面试·职场和发展
DeepAgent14 小时前
AI Agent 面试篇(01):AI 岗位面试到底怎么走——从网申到 Offer 的完整流程
人工智能·面试·职场和发展
林太白15 小时前
js-var和let以及const区别
前端·面试
Elasticsearch16 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
elasticsearch
智购科技自动售货机工厂16 小时前
2026自动售货机端侧AI降本逻辑:从云端API到本地推理的成本重构~YH
人工智能·python·ui·面试·交互
野生技术架构师17 小时前
1000+ Java面试题知识图谱:从基础语法到分布式架构的完整拓扑
java·面试
流浪00118 小时前
Linux系统篇34——信号(六):信号处理期间又来了怎么办?——sigaction、sa_mask、可重入函数与 volatile
linux·运维·面试·操作系统·信号处理·信号