当前位置: 首页 > news >正文

大数据面试题之Elasticsearch:每日三题(七)

大数据面试题之Elasticsearch:每日三题

  • 1.Elasticsearch索引文档的流程?
  • 2.Elasticsearch更新和删除文档的流程?
  • 3.Elasticsearch搜索的流程?

在这里插入图片描述

1.Elasticsearch索引文档的流程?

在这里插入图片描述

  • 协调节点默认使用文档ID参与计算(也支持通过routing),以便为路由提供适合的分片:shard=hash(document_id)%(num_of_primary_shards)
  • 当分片所在的节点接收到来自协调节点的请求后,会将请求写到Memory Buffer,然后定时(默认是每隔1秒)写入到Filesystem Cache,这个从Memory Buffer到Filesystem Cache的过程就叫做refresh;
  • 当然在某些情况下,存在Momery Buffer和Filesystem Cache的数据可能会丢失,ES是通过translog的机制来保证数据的可靠性的。其实现机制是接收到请求后,同时也会写入到translog中,当Filesystem cache中的数据写入到磁盘中时,才会清除掉,这个过程叫做flush;
  • 在flush过程中,内存中的缓冲将会被清除,内容被写入一个新段,段的fsync将创建一个新的提交点,并将内容刷新到磁盘,旧的translog将被删除并开始一个新的translog。
  • flush触发的时机是定时触发(默认30分钟)或者translog变得太大(默认为512M)时;

2.Elasticsearch更新和删除文档的流程?

  • 删除和更新也都是写操作,但是Elasticsearch中的文档是不可变的,因此不能被删除或者改动以展示其变更;
  • 磁盘上的每个段都有一个相应的.del文件。当删除请求发送后,文档并没有真的被删除,而是在.del文件中被标记为删除。该文档依然能匹配查询,但是会在结果中被过滤掉。当断合并时,在.del文件中被标记为删除的文档将不会被写入新段。
  • 在新的文档被创建时,Elasticsearch会为该文档指定一个版本号,当执行更新时,旧版本的文档在.del文件中被标记为删除,新版本的文档被索引到一个新段。旧版本的文档依然能匹配查询,但是会在结果中被过滤掉

3.Elasticsearch搜索的流程?

在这里插入图片描述

  • 搜索被执行成一个二阶段过程,我们称之为Query Then Fetch;
  • 在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。每个分片在本地执行搜索并构建一个匹配文档的大小为from+size的优先队列。ps:在搜索的时候是会查询Filesystem Cache的,但是有部分数据还在Memory Buffer,所以搜索是近实时的。
  • 每个分片返回各自优先队列中所有文档的ID和排序值给协调节点,它合并这些值到自己的优先队列中来产生一个全局排序后的结果列表。
  • 接下来就是取回阶段,协调节点辨别出哪些文档需要被取回并向相关的分片提交多个GET请求。每个分片加载并丰富文档,如果有需要的话,接着返回文档给协调节点。一旦所有的文档都被取回了,协调节点返回结果给客户端。
  • Query Then Fetch 的搜索类型在文档相关性打分的时候参考的是本分片的数据,这样在文档数量较少的时候可能不够准确,DFS Query Then Fetch 增加了一个预查询的处理,询问Term和Document frequency,这个评分更准确,但是性能会变差。

在这里插入图片描述

http://www.lryc.cn/news/100337.html

相关文章:

  • ubuntu20.04 安装 Qt5.15
  • web之标签元素转换成图片、a标签元素下载图片、获取浏览器窗口名称、重命名、元素定位、旋转、拉伸文字、文字向心对齐
  • 你应该知道的关于PCB布线的31条建议
  • matlab中dir的各种使用方法(包括递归遍历子文件夹)
  • 软件测试/测试开发丨Selenium环境安装与使用
  • WPF实战学习笔记15-使用Memo类的GetAll接口
  • 算法与数据结构-二分查找
  • 【软件测试】什么是selenium
  • redis线程模型
  • 【idea工具】idea工具,build的时候提示:程序包 com.xxx.xx不存在的错误
  • 线性代数——特征值和特征向量
  • 运筹系列83:使用分枝定界求解tsp问题
  • linux 指令 第3期
  • 测试用例实战
  • Unity XML1——XML基本语法
  • 了解Unity编辑器之组件篇Playables和Rendering(十)
  • python的包管理器pip安装经常失败的解决办法:修改pip镜像源
  • 忘记安卓图案/密码锁如何解锁?
  • Bash编程
  • vue指令-v-model修饰符
  • 【论文精读CVPR_2023】3D-Aware Face Swapping
  • flutter开发实战-自定义相机camera功能
  • 重排链表——力扣143
  • Lambda表达式常见的Local variable must be final or effectively final原因及解决办法
  • YOLOv5改进系列(16)——添加EMA注意力机制(ICASSP2023|实测涨点)
  • [SSM]GoF之代理模式
  • 桥梁安全生命周期监测解决方案
  • 图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index
  • SpringBoot自动配置、启动器原理爆肝解析(干货满满)
  • chrome扩展控制popup页面动态切换