【Elasticsearch】refresh与提交

在Elasticsearch中,Translog日志的提交确实涉及到与刷新(Refresh)时写入Lucene段的数据进行合并,并最终写入磁盘。以下是详细的步骤和解释:

 

一、Translog日志的提交过程

1. 刷新(Refresh)操作

   - 写入Lucene段:刷新操作会将内存中的索引缓冲区(Index Buffer)中的数据写入到Lucene的倒排索引中,并创建一个新的Lucene段(Segment)。这个过程使得新写入的数据对搜索操作可见。

   - 文件系统缓存:刷新操作将数据写入到文件系统缓存(File System Cache)中,而不是直接写入到磁盘。文件系统缓存是操作系统的内存区域,用于缓存磁盘I/O操作。

   - 段的创建:刷新操作会创建一个新的Lucene段,但这个段是暂时存储在文件系统缓存中的,还没有完全写入到磁盘。

 

2. Translog记录

   - 记录操作:在刷新操作的同时,Elasticsearch会将所有写入操作记录到Translog中。Translog是一个持久化的日志文件,记录了所有未提交的写入操作,以保证数据的可靠性。

   - Translog文件:Translog文件存储在Elasticsearch的数据目录中,具体路径为:

     

```

     /path/to/elasticsearch/data/nodes/<node_id>/indices/<index_uuid>/<shard_id>/translog/

     ```

 

3. 提交(Commit)操作

   - 合并数据:提交操作会将文件系统缓存中的Lucene段完全写入到磁盘中,并清理Translog。在提交过程中,Elasticsearch会将Translog中的操作与文件系统缓存中的Lucene段进行合并。

   - 写入磁盘:提交操作会将合并后的数据完全写入到磁盘中,确保数据的持久化。这个过程会创建一个新的Lucene提交点(Commit Point),记录当前索引的状态。

   - 清理Translog:提交操作完成后,Elasticsearch会清理Translog中已提交的操作,释放磁盘空间。清理后的Translog只保留尚未提交的写入操作。

 

二、详细步骤

1. 写入内存缓冲区:

   - 客户端发送写入请求,Elasticsearch将数据写入到内存中的索引缓冲区(Index Buffer)。

   - 同时,Elasticsearch将写入操作记录到Translog中。

 

2. 刷新操作:

   - 当内存缓冲区的数据达到一定大小或经过一定时间后,Elasticsearch会将内存缓冲区的数据刷新到Lucene索引中,创建一个新的Lucene段。

   - 这个Lucene段被写入到文件系统缓存中,使数据对搜索操作可见。

 

3. 提交操作:

   - 定期(默认30分钟)或在Translog达到一定大小时,Elasticsearch会触发提交操作。

   - 提交操作会将文件系统缓存中的Lucene段完全写入到磁盘中,并创建一个新的Lucene提交点。

   - 提交操作会将Translog中的操作与文件系统缓存中的Lucene段进行合并,确保所有未提交的操作都被持久化。

   - 提交操作完成后,Elasticsearch会清理Translog中已提交的操作。

 

三、总结

- 刷新操作:将内存中的数据写入到Lucene段中,并存储在文件系统缓存中,使数据对搜索可见。

- 提交操作:将文件系统缓存中的Lucene段完全写入到磁盘中,清理Translog,确保数据的持久化。

- 合并数据:提交操作会将Translog中的操作与文件系统缓存中的Lucene段进行合并,确保所有未提交的操作都被持久化。

 

通过合理配置刷新和提交操作的频率,可以平衡搜索性能和数据可靠性,满足不同应用场景的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值