Elasticsearch中的-1 refresh_interval到底是什么意思?

林H.

我已经阅读了很多有关Elasticsearch中的索引刷新的文章。我了解大于0的不同间隔的含义,这是连续段刷新之间经过的时间,使它们可用于搜索。但是,我不确定到底refresh_interval: -1是什么。以我的理解,这是一种禁用自动索引刷新但不能完全禁用的方法。即使将refresh_interval设置为-1,Elasticsearch仍会不时刷新段我不知道如果禁用自动刷新,哪种机制将控制此刷新活动。

对不起,我知道我没有很多代码可发布,因此我将为我提供一些背景知识。我的应用程序不需要近乎实时的搜索;它只需要最终的一致性。但是,这种偶然性应该是合理的,即在几秒钟到不到一分钟的时间内,而不是半个小时。我想知道是否可以让它留给Elasticsearch决定什么时候最好在其方便时刷新,而不是定期刷新。原因是因为禁用自动刷新的确为我的应用程序带来了一些性能上的好处,例如,在垃圾回收间隔之间,JVM堆大小的使用没有那么积极地增加(请参见下图)

禁用刷新间隔后,堆使用率上升的幅度较小

安德烈·斯特凡

您的理解有些混乱。刷新索引和写入磁盘是两个不同的过程,并且不一定相关,因此,即使srefresh_interval为-1 ,您对段仍在写入的观察

对文档建立索引后,会将其添加到内存缓冲区中并附加到事务日志文件中。刷新后,会将缓冲区中的文档写入没有fsync的新段中,该段将打开以使其可见以进行搜索并清除缓冲区。超越对尚未清除,并没有什么实际保存在磁盘上(因为没有fsync)。

现在想象一下刷新没有发生:没有索引刷新,您无法搜索文档,段未在缓存中创建。

此处的设置将决定何时进行刷新(写入磁盘)。默认情况下,当日志的大小达到512mb时或30分钟后。这实际上是将数据持久存储在磁盘上,其他所有内容都在文件系统缓存中(如果节点死掉或计算机重新启动,则缓存将丢失,并且转储是唯一的解决方法)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

堆中的公式n / 2 ^ h + 1到底是什么意思?

在CUDA PTX中,%warpid到底是什么意思?

在Tomcat中,“ connectionTimeout”到底是什么意思?

Rust中的“#[derive(Debug)]”到底是什么意思?

Java中的“ Interface <T>”到底是什么意思?

'$ scope'角度可变中的'$'到底是什么意思

iptables中的lo到底是什么意思?

Double在Java中到底是什么意思?

Swiftlint中的“类型体长”到底是什么意思?

decltype(void())中的void()到底是什么意思?

++在Swift中到底是什么意思?

命令pkill -USR1 -n -x dd到底是什么意思?

javascript中到底是什么(alert(1),“”)

Flutter 中 Futurebuilder 中的快照到底是什么意思?

如果两种类型在C中彼此“兼容”,这到底是什么意思?

@运算符在dart中到底是什么意思?

在Azure探查器中AWAIT_TIME到底是什么意思?

函数式编程中的“部分功能”到底是什么意思?

IntelliJ的“提交更改”对话框中的“清除”到底是什么意思

在Java中声明“全局”变量时,“静态”到底是什么意思?

Java I / O中的“ Stream”和“ Buffer”到底是什么意思?

es2unix中的“黄色”和“红色”状态到底是什么意思?

Linux命令`ps ao args`中的`args`到底是什么意思?

multistrap配置中的“ noauth”属性到底是什么意思?

package.json依赖项中的“ next”到底是什么意思?

“开发人员凭证”在Amazon Cognito文档中到底是什么意思

“上下文”在C#异步/等待代码中到底是什么意思?

在Dispose(bool)中,dis处置标记到底是什么意思?

joblib中的batch_size和pre_dispatch到底是什么意思