理解ES的refresh、flush、merge

一、refresh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0yzOUKaH-1598160536751)(http://note.youdao.com/yws/res/63745/75E037FE0FAB49A799FFD1355C3A0E58)]

对于任何数据库的写入来讲fsync刷盘虽然保证的数据的安全但是如果每次操作都必须fsync一次,那fsync操作将是一个巨大的操作代价,在衡量对数据安全与操作代价下,ES引入了一个较轻量的操作refresh操作来避免频繁的fsync操作。

1.1 什么是refresh

在ES中,当写入一个新文档时,首先被写入到内存缓存中,默认每1秒将in-memory index buffer中的文档生成一个新的段并清空原有in-memory index buffer,新写入的段变为可读状态,但是还没有被完全提交。该新的段首先被写入文件系统缓存,保证段文件可以正常被正常打开和读取,后续再进行刷盘操作。由此可以看到,ES并不是写入文档后马上就可以搜索到,而是一个近实时的搜索(默认1s后)。

如图,文档被写入一个新的段后处于searchable状态,但是仍是未提交状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V52oQp63-1598160536754)(http://note.youdao.com/yws/res/63552/92E835341A294B12BABEF56A121F8204)]

文档写入内存缓存区中,默认每1s生成一个新的段,这个写入并打开一个新段的轻量的过程叫做 refresh。

虽然refresh是一个较轻量的操作,但也是有一定的资源消耗的,必要时刻可以手动执行refresh api保证文档可立即被读到。生产环境建议正确使用refresh api,接受ES本身1s后可读的近实时特性。

1.2 refresh api的使用

-- refresh全局索引
POST /_refresh 

-- refresh指定索引
POST /blogs/_refresh 

1.3 refresh相关参数设置

  • refresh_interval 控制索引refresh频率

默认为1s,可根据实际业务场景设置为 n u m {num}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值