Elasticsearch Refresh 与 Flush 操作

栏目: 编程工具 · 发布时间: 7年前

内容简介:一起认真学习大数据,

Elasticsearch Refresh 与 Flush 操作

本文来自51CTO博客, 原 文地址  https://blog.51cto.com/13981400/2402526

初次接触到这两个概念,估计都会觉得他们没什么差别,都是为了在操作索引之后让索引可以被实时性的搜索,不过它们还是有点不同的 。

Elasticsearch 底层依赖 Lucene,这里我们介绍下 Lucene 的 Segment, Reopen,Commit。

Segment、Reopen、Commit

Segment

在 ES 中,基本的存储单元是 shard(分片 ) ,但是在更底层的 Lucene 上稍微有点不同,ES 的每一个 shard 是 Lucene 的一个 index(索引 ) ,Lucene 的索引由多个 segment 组成,每个 segment 就是 ES 文档的倒序索引,里面包含了一些 term(词 ) 的 mapping(映射 ) 。

Elasticsearch Refresh 与 Flush 操作

当每个 ES 的文档创建的时候,都会写入一个新的 segment 中,因此每次写入的都是新的 segment,所以不需要修改之前的 segment。在删除文档的时候,只是在它属于的 segment 哪里标记为已删除就可,没有真正的从磁盘中抹除。更新也是同样的,只是在对应之前 segment 哪里标记为逻辑删除,然后新建一个新的 segment。

Reopen

Reopen 是为了让数据可以可以被搜索到,尽管这个时候数据可以被搜索到,但是不一定保证数据已经被持久化到磁盘中 。

Commit

Commit 就是为了让数据持久化,每一次的 Commit,不同 segment 的数据都会被持久化到磁盘中,虽然这样可以让数据更安全,但是每一次操作都会消耗系统资源,会有大量的 IO 操作 。

Translog

ES 在持久化的时候引入了一种新的方式,translog(transaction log ) ,一个文档被索引之后,就会被添加到内存缓冲区,并且追加到了 translog。

Elasticsearch Refresh 与 Flush 操作

Refresh 操作

默认情况下,ES 会每秒 refresh 一次,每次操作都会把内存缓冲区的内容拷贝到新创建的 segment 中去,这一步是在内存中操作的,这个时候新的文档就会被搜索了。也就是说 ES 是近实时性的搜索,差不多1s钟,才能让数据可以被搜索到。

Elasticsearch Refresh 与 Flush 操作

Flush 操作

Flush 操作意味着,所有在内存缓冲区的文档被写到新的 Lucene Segment 中,也就是所有在内存中的 segment 被提交到了磁盘,同时清除 translog。

Elasticsearch Refresh 与 Flush 操作

一般 flush 的时间间隔会比较久,默认30分钟,或者当 translog 达到了一定的大小,也会触发 flush 操作。

最后

简单来说,ES 的 refresh 操作是为了让最新的数据可以立即被搜索到。而 flush 操作则是为了让数据持久化到磁盘中,另外 ES 的搜索是在内存中处理的,因此 flush 操作不影响数据能否被搜索到 。

translog 一般在进行 flush 的时候被清空,一般在 fsync 和 commit 的时候被持久化到磁盘,默认的 translog 是在6.x版本以后,每次请求都会 fsync 到磁盘,不过有些 index.translog 的配置可以设置。

阅读完有所收获?欢迎分享本文给更多的小伙伴

Elasticsearch Refresh 与 Flush 操作

长按二维码 关注我 ↑

一起认真学习大数据, 预研新技术


以上所述就是小编给大家介绍的《Elasticsearch Refresh 与 Flush 操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

python 3标准库

python 3标准库

道格·赫尔曼 / 机械工业出版社 / 2018-10 / 199

在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。一起来看看 《python 3标准库》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换