ElasticSearch数据写入流程

在这里插入图片描述
       当有新数据写入时,会被写入到indexing buffer当中。此时数据还不能被search到,通过refresh操作将JVM堆内存中的indexing buffer中的新数据刷到OS的file system 上面,这时在filesystem上的数据会形成segment(基于lucence的倒排索引文件)可以被search到。
        indices.memory.index_buffer_size 接受百分比或字节大小的值。 它默认为10%,这意味着分配给一个节点的总堆栈的10%将用作所有分片共享的索引缓冲区大小。
       数据存在os filesystem cache会存在风险,比如ES集群节点意外down掉或者ES重启,因为这时数据还没有持久化到磁盘上面,os内存数据丢失是灾难性不可逆的。那么translog就可以上场了,它记录了ES一系列操作,新数据写入时,不仅会被写到indexing buffer,该操作记录也会存入在translog当中。当出现数据丢失时,通过它可以恢复原有数据,从而保证数据安全性。
       那么tranlog文件随着时间的推移,记录操作项越来越多,文件也会越来越大,直到数据持久化到硬盘上,也就是flush,此时数据已经安全了,translog文件才会被清空。
flush的时机可能是:
1.定时flush;
2.translog大小达到阈值;
3.一些重要操作;
4.指令触发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值