Elasticsearch Refresh 与 Flush 操作

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

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

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

查看所有标签

猜你喜欢:

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

Servlet与JSP核心编程

Servlet与JSP核心编程

[美]Marty Hall、Larry Brown、Yaakov Chalkin / 胡书敏 / 2009-6 / 68.00元

《Servlet与JSP核心编程(第2卷 第2版)》在第l卷的基础上,广泛涉及自定义标签库、过滤器、声明式安全、JSTL和Struts等主题,并沿袭深受读者喜爱的写作风格,通过完整、有效、资料丰富的程序来演绎目前最流行的技术和最佳实践。Java EE已经成为电子商务网站、动态网站和Web应用与服务开发的首选,作为这一平台的基础,servlet与JSP的重要性日益突出,并在极短的时间内得以迅速普及。......一起来看看 《Servlet与JSP核心编程》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具