首页  

elasticsearch中refresh和flush区别     所属分类 elasticsearch 浏览量 1272
索引提交(commit)
如果这个提交的过程直接将数据写入磁盘(fsync)会影响性能
index-buffer 写入filesystem cache的过程叫做refresh

refresh操作可以通过API设置
POST /index/_settings
{"refresh_interval":"10s"}
进行大规模创建索引操作时,最好将refresh关闭。
POST /index/_settings
{"refresh_interval":"-1"}

默认的refresh间隔时间是1s

为了避免数据丢失 使用 flush 与translog机制
document
index buffer   
filesystem cache
translog
数据从filesystem cache中写入磁盘之后才会将translog清空

从filesystem cache写入磁盘的过程就是flush


translog作用
1.保证filesystem cache中的数据不会因为重启或故障时丢失。
2.系统重启时会从translog中恢复之前记录的操作。
3.CRUD操作时,先到translog中进行查找tranlog保存的是最新的数据。
4.flush之后清楚translog 
 
 
flush操作
1.每个shard30分钟进行一次flush操作。
2.当translog的数据达到某个上限时进行flush操作。

相关配置

index.translog.flush_threshold_ops:当发生多少次操作时进行一次flush。默认是 unlimited。
index.translog.flush_threshold_size:当translog的大小达到此值时会进行一次flush操作。默认512mb。
index.translog.flush_threshold_period:在指定的时间间隔内如果没有进行flush操作,会进行一次强制flush操作。默认是30m。
index.translog.interval:多少时间间隔内会检查一次translog,来进行一次flush操作。随机在这个值到这个值的2倍大小之间进行一次操作,默认是5s。

上一篇     下一篇
elasticsearch5.0基本概念

elasticsearch5.0术语

elasticsearch5.0入门之索引操作

elasticsearch5.0数据索引与查询实战

网站运营推广之七言绝句

elasticsearch5.0使用RPM包安装