首页/数据/NoSQL 速查/refresh 与 flush 的区别
Elasticsearch89 条

refresh 与 flush 的区别

refresh 让新写入的文档进入可搜索状态(默认每秒一次),flush 把内存缓冲区与 translog 落盘并清空 translog;两者目的不同,不能互相替代。

NoSQL 速查数据更新于 2026-10-12
refresh近实时可见性:把内存段刷成可检索段;可手动触发或关闭自动刷新
flush持久化与恢复加速:Lucene commit + 清空 translog
设置项index.refresh_interval 默认 1s;调整后按新间隔生效

示例

示例
POST /my-index/_refresh

PUT /my-index/_settings
{ "index.refresh_interval": "30s" }

POST /my-index/_flush
批量导入期间把 refresh_interval 设为 -1 可减少段生成压力,导入完成再恢复并手动 _refresh 一次。

易错点

  • 把 refresh_interval 长期设为 -1 会让新数据一直搜不到,导入类任务结束后必须恢复
  • 频繁手动 _refresh 会产生大量小段,反而加重合并负担

数据来源与参考

  • Elasticsearch Guide: Refresh API
  • Elasticsearch Guide: Flush API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌