当前位置: 首页 > 面试题库 >

为什么Elasticsearch中的文档是不可变的?

寇鸿
2023-03-14
问题内容

我试图摆脱elasticsearch。正在阅读权威指南。

他们提到,每次我更新文档中的某些内容时,更新API都会执行一次检索-更改-
重新索引周期。我完全拿到,因为他们说,“文件是不可变的”(见本做这个)。我在这里要问的是为什么它首先是不可变的。如果这不是约束,那么只允许特定字段的更新和索引是否具有优势?


问题答案:

首先,告诉段是不可变的比告诉文档是不可变的要好。了解原因。您需要了解Lucene的工作原理。卢塞恩(Lucerne)是一个Java库,在上面建立了elasticsearch。在底层,一个单独的碎片是一个Lucene实例,它完成文档存储和搜索的实际工作。Elasticsearch更是基于Lucene的基于html" target="_blank">分布式REST的服务器层。

在Lucene中,为了实现高索引速度,我们使用了段架构。一堆文件保留在一个段中,其中每个段是磁盘中的单个文件。由于两次写入之间的文件非常繁重,因此将一个段设为不可变的,以便所有后续写入都转到New段。



 类似资料:
  • 本文向大家介绍String 为什 么是不可变的?相关面试题,主要包含被问及String 为什 么是不可变的?时的应答技巧和注意事项,需要的朋友参考一下 简单的来说:String 类中使用 final 关键字修饰字符数组来保存字符串,`private final char value[]`,所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 Ab

  • 问题内容: 有人问我为什么String是不可变的 我这样回答: 当我们在Java中像这样创建一个字符串时,;将在字符串pool(hello)中创建一个对象,并且s1将指向hello。现在再次执行该操作;将不会创建另一个对象,但是s2将指向该对象,hello 因为JVM将首先检查如果在字符串池中是否存在相同的对象, 如果不存在则仅创建一个新对象。 现在,如果假设Java允许串可变那么如果我们改变S1

  • 问题内容: 为什么Redux中的对象是不可变的?我知道某些框架(例如Angular2)将使用onPush并可以利用不变性来比较视图状态以更快地呈现,但是我想知道是否还有其他原因,因为Redux与框架无关,但它在其自己的文档中提到要使用不变性(与框架无关)。 感谢任何反馈。 问题答案: Redux是一个小型库,将状态表示为(不可变的)对象。和 新状态 通过将当前状态传递给纯函数来创建全新的对象/应用

  • 我一直在阅读React的快速启动文档; 为什么React道具是只读的?

  • 问题内容: 我一直在阅读React的快速入门文档。 无论您将组件声明为函数还是类,都不得修改其自身的道具 这是一个“纯”函数,因为它不尝试更改其输入,并且对于相同的输入始终返回相同的结果: 这是“不纯”函数,因为它更改了自己的输入:https : //codesandbox.io/s/9z38xv4x7r 为什么React道具是只读的? 问题答案: 组件应管理自己的状态,但不应管理自己的道具。本质

  • 有一个问题,为什么他们要求在字典中使用不可变对象作为键。 当我最近使用字典(显然不是为了哈希表)将Xml节点对象作为键放置时,这个问题实际上进入了我的脑海。然后,我在使用过程中多次更新节点。 那么,“使用不可变键”到底意味着什么呢?