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 操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

鸟哥的Linux私房菜

鸟哥的Linux私房菜

鸟哥 / 机械工业出版社 / 2008-1 / 88.00元

《鸟哥的Linux私房菜:服务器架设篇(第2版)》是对连续三年蝉联畅销书排行榜前10名的《Linux鸟哥私房菜一服务器架设篇》的升级版,新版本根据目前服务器与网络环境做了大幅度修订与改写。 全书共3部分,第1部分为架站前的进修专区,包括在架设服务器前必须具备的网络基础知识、Linux常用网络命令、Linux网络侦错步骤,以及服务器架站流程:第2部分为主机的简易防火措施,包括限制Linux对......一起来看看 《鸟哥的Linux私房菜》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

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

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具