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

这篇具有很好参考价值的文章主要介绍了大数据面试题之Elasticsearch:每日三题(七)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大数据面试题之Elasticsearch:每日三题(七),大数据,elasticsearch,搜索引擎

1.Elasticsearch索引文档的流程?

大数据面试题之Elasticsearch:每日三题(七),大数据,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搜索的流程?

大数据面试题之Elasticsearch:每日三题(七),大数据,elasticsearch,搜索引擎

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

大数据面试题之Elasticsearch:每日三题(七),大数据,elasticsearch,搜索引擎文章来源地址https://www.toymoban.com/news/detail-615255.html

到了这里,关于大数据面试题之Elasticsearch:每日三题(七)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每日五道java面试题之java基础篇(十二)

    AQS是⼀个JAVA线程同步的框架。是JDK中很多锁⼯具的核⼼实现框架。 在AQS中,维护了⼀个信号量state和⼀个线程组成的双向链表队列。其中,这个线程队列,就是⽤来给线程排队的,⽽state就像是⼀个红绿灯,⽤来控制线程排队或者放⾏的。 在不同的场景下,有不⽤的意义。

    2024年02月20日
    浏览(39)
  • 每日五道java面试题之java基础篇(九)

    对于还在正常运⾏的系统 : 可以使⽤jmap来查看JVM中各个区域的使⽤情况 可以通过jstack来查看线程的运⾏情况,⽐如哪些线程阻塞、是否出现了死锁 可以通过jstat命令来查看垃圾回收的情况,特别是fullgc,如果发现fullgc⽐较频繁,那么就得进⾏调优了 通过各个命令的结果,

    2024年02月20日
    浏览(42)
  • 每日三道面试题之 Java并发编程 (一)

    并发编程是一种允许多个操作同时进行的编程技术,这种技术在现代软件开发中非常重要,原因如下: 充分利用多核处理器 :现代计算机通常都拥有多核处理器,通过并发编程,可以让每个核心独立执行不同的任务,从而显著提高程序的执行效率和吞吐量。 提高资源利用率

    2024年04月09日
    浏览(48)
  • 每日一道面试题之Collection 和 Collections 有什么区别?

    Collection和Collections是Java集合框架中的两个重要的概念,它们在Java集合框架中扮演不同的角色。 Collection 是 Java集合框架中的一个接口 ,它是 所有集合类的根接口 , 用于操作和管理一组对象 ,Collection接口的常见实现类包括 List、Set和Queue 等,分别定义了不同的存储方式。

    2024年02月16日
    浏览(40)
  • 每日一道面试题之list和set有什么区别?

    List和Set 是 Java集合框架中的两个接口 ,虽然它们都继承自Collection接口,但在使用上有一些区别。 有序性 : List是有序的集合 ,它 按照元素的插入顺序进行存储和访问 。可以 通过索引来访问List中的元素 。而 Set是无序的集合 ,它不保证元素的顺序,也 不能通过索引来访问

    2024年02月16日
    浏览(40)
  • 每日一道面试题之ArrayList 和 LinkedList 的区别是什么?

    ArrayList 和 LinkedList 是Java中常用的两种集合类,它们在实现和使用上有一些区别,如下所示: 内部实现 : ArrayList 是 基于数组实现 的动态数组,而 LinkedList 是 基于双向链表 实现的。 插入和删除操作 : ArrayList 在插入和删除元素时,需要移动其他元素来保持其数组元素位置

    2024年02月16日
    浏览(45)
  • 每日一道面试题之java 中 IO 流分为几种?

    流是 数据在数据源(文件)和程序(内存)之间经历的路径。 这样解释似乎是很抽象不易理解的,因此我们拿生活中的例子来说,我们可以把流看成流动的自来水,打开水阀,自来水就会通过水管从水源流到各个用户家中,同样的道理,水库中的水也会通过水管流入到水源。 从水

    2024年02月07日
    浏览(38)
  • 每日一道面试题之final、finally、finalize 有什么区别?

    final是Java中的 ,用于 修饰变量、方法或类 ,被final修饰的类表示 该类不能被继承 ,被final修饰的变量表示 该变量不能赋新的值 ,被final修饰的方法表示 该方法不能被重写 . finally是Java中的 ,用于 定义在try-catch语句块中的一个代码块 ,无论是否发生异常都会执

    2024年02月08日
    浏览(46)
  • 每日一道面试题之如何实现数组和 List 之间的转换?

    要实现数组和List之间的转换,可以使用Java中的 Arrays类 和 Collections类 提供的方法。 数组转换为List: 使用 Arrays类 的 asList()方法 可以 将数组转换为List 。这个方法接受一个数组作为参数,并返回一个包含数组元素固定大小的List。 举例: 输出如下所示: List转换为数组: 使

    2024年02月16日
    浏览(33)
  • 每日一道面试题之介绍一下常见的异常类有哪些?

    常见的异常类包括: NullPointerException(空指针异常): 例如: SQLException:(数据库相关的异常): 例如: IndexOutOfBoundsException(下标越界异常): 例如: IllegalArgumentException(非法参数异常): 例如: IllegalStateException(非法状态异常): 例如: ClassCastException(类型转换异常

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包