当前位置: 首页 > news >正文

ES中数据刷新策略refresh

在 Elasticsearch 中,插入数据时的 refresh 参数控制文档在写入后何时对搜索可见,其行为直接影响数据可见性和系统性能。以下是 refresh 参数的三个可选值(truefalsewait_for)的详细说明及适用场景:

1. refresh=true

  • 行为
    立即触发一次 强制刷新(Refresh),将当前写入操作涉及的数据从内存缓冲区(In-memory Buffer)刷新到新的 Lucene Segment,使文档立即可被搜索 。
     
  • 特点
    • 实时可见性:写入后数据即刻对搜索可见,适用于需要实时反馈的场景(如测试环境或低频写入)。
    • 性能开销:频繁强制刷新会导致生成大量小 Segment,增加后续合并(Merge)和搜索的开销 。
    • 并发影响:可能干扰其他正在进行的刷新操作,增加系统负载。
  • 适用场景
    • 单条写入后需立即搜索的调试或测试场景。
    • 低频写入但高实时性要求的业务(如关键配置更新)。
  • 示例
    POST /index/_doc/1?refresh=true
    { "field": "value" }


2. refresh=false(默认值)

  • 行为
    不主动触发刷新,依赖 Elasticsearch 的 自动刷新机制(默认每秒一次)将数据刷入 Segment。
  • 特点
    • 延迟可见:写入后需等待下一次自动刷新(通常 1 秒)后文档才可搜索。
    • 高效性:减少 I/O 操作,适合批量写入或高吞吐场景。
  • 适用场景
    • 批量数据导入(如日志采集、ETL 流程)。
    • 对搜索可见性延迟不敏感的高频写入业务。
  • 优化建议
    批量写入时可临时关闭自动刷新以提升性能:
    PUT /index/_settings
    { "index.refresh_interval": "-1" }


3. refresh=wait_for

  • 行为
    当前写入请求 阻塞等待,直到下一次自动刷新完成后再返回响应,确保写入操作完成后文档对搜索可见,但 不主动触发刷新。
  • 特点
    • 平衡性能与可见性:避免因强制刷新产生过多小 Segment,同时保证写入后数据在下次自动刷新时可见。
    • 请求延迟:写入操作的响应时间取决于自动刷新间隔(默认最多等待 1 秒)。
  • 适用场景
    • 需要确保数据变更后搜索可见,但允许短暂延迟的业务(如订单状态更新)。
    • 避免高频强制刷新导致性能波动的场景。
  • 示例
    POST /index/_doc/1?refresh=wait_for
    { "field": "value" }


参数对比与选型建议

参数数据可见性性能影响适用场景
true立即可见高(频繁 I/O)测试、低频关键写入
false延迟约 1 秒批量导入、高频写入
wait_for下次自动刷新后可见中等(请求阻塞)需保证可见性但避免主动刷新的业务

注意事项

  1. 自动刷新间隔调整
    通过 index.refresh_interval 可修改自动刷新频率,但过短的间隔会增加系统负载。
  2. Segment 合并优化
    频繁使用 refresh=true 会导致小 Segment 过多,需定期执行 _forcemerge 合并分段。
  3. 事务日志(Translog)
    即使未刷新,数据仍通过 Translog 保证持久性,故障恢复时可通过重放 Translog 恢复数据。

通过合理选择 refresh 参数,可以在数据可见性、写入性能和系统稳定性之间取得最佳平衡。

相关文章:

  • SYSTEM文件夹下的文件
  • 什么是XSS,什么是CSP,什么是gevent
  • 文件压缩与解压工具7-Zip的安装和使用(免费)
  • 期权帮|2025年股指期货最新规则是什么?
  • Dify 开源大语言模型应用开发平台使用(一)
  • 使用Python和Transformer模型进行土壤水热模拟与预测的基本示例
  • Jasper AI技术浅析(六):关键词优化与 SEO 生成
  • 【IDEA】IDEA常用的VM配置,优化配置让开发过程更顺畅
  • Android ChatOn-v1.66.536-598-[构建于ChatGPT和GPT-4o之上]
  • vue3 vite 两种监听pinia状态变化的方式比较:watch, $subscribe
  • rust编程实战:实现3d粒子渲染wasm
  • Leetcode 112: 路径总和
  • diffuser库使用本地模型生成图像
  • MagicDriveDiT:具有自适应控制的自动驾驶高分辨率长视频生成
  • 树莓集团南京新项目:百度百科更新背后的战略意图
  • C 语 言 --- 猜 数 字 游 戏
  • MDM 如何彻底改变医疗设备的远程管理
  • 二、Java-封装playwright UI自动化(根据官网执行步骤,首先封装BrowserFactory枚举类及BrowserManager)
  • 【leetcode hot 100 73】矩阵置零
  • 软件高级架构师 - 软件工程
  • 61岁云浮市律师协会副会长谭炳光因突发疾病逝世
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案
  • 词条数量大幅扩充,《辞海》第八版启动编纂
  • 七猫征文大赛颁出112万奖金,非遗题材作品斩获金奖
  • 国家统计局:2024年城镇单位就业人员工资平稳增长