Elasticsearch的Refresh与Flush操作

本文介绍了Elasticsearch中的Refresh和Flush操作。Refresh使数据近实时可搜索,通常每秒执行一次,将内存缓冲区内容拷贝到新segment。而Flush操作将内存中的文档写入磁盘,确保数据持久化,该过程默认每30分钟或translog达到一定大小时触发。此外,translog在flush时被清空,并在6.x版本后默认每次请求都fsync到磁盘。
摘要由CSDN通过智能技术生成

初次接触到这两个概念,估计都会觉得他们没什么差别,都是为了在操作索引之后让索引可以被实时性的搜索,不过它们还是有点不同的。
Elasticsearch底层依赖Lucene,这里我们介绍下Lucene的segment, Reopen,commit。
Segment
在ES中,基本的存储单元是shard(分片),但是在更底层的Lucene上稍微有点不同,ES的每一个shard是Lucene的一个index(索引),Lucene的索引由多个segment组成,每个segment就是ES文档的倒序索引,里面包含了一些term(词)的mapping(映射)。

在这里插入图片描述
当每个ES的文档创建的时候,都会写入一个新的segment中,因此每次写入的都是新的segment,所以不需要修改之前的segment。在删除文档的时候,只是在它属于的segment哪里标记为已删除就可,没有真正的从磁盘中抹除。更新也是同样的,只是在对应之前segment哪里标记为逻辑删除,然后新建一个新的segment。
Lucene Reopen
Reopen是为了让数据可以可以被搜索到,尽管这个时候数据可以被搜索到,但是不一定保证数据已经被持久化到磁盘中。
Lucene Commit
Commit就是为了让数据持久化,每一次的Commit,不同segment的数据都会被持久化到磁盘中,虽然这样可以让数据更安全,但是每一次操作都会消耗系统资源,会有大量的IO操作。
Translog
ES在持久化的时候引入了一种新的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值