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

【Elasticsearch】调用_flush api会调用_refresh 吗?

调用 `_flush` API 时会隐式地执行 `_refresh` 操作。

 

为什么 `_flush` 会执行 `_refresh`?

在 Elasticsearch 中,`_flush` 操作的目的是将内存中的数据和事务日志(translog)中的操作持久化到磁盘。为了确保数据的一致性和完整性,在 `_flush` 操作开始之前,Elasticsearch 会先执行 `_refresh` 操作,将内存缓冲区中的数据写入到新的 Lucene segment 中并加载到文件系统缓存中。这样可以确保在将数据持久化到磁盘之前,所有的数据都已经处于可搜索的状态。

 

`_flush` 的具体流程

1. 执行 `_refresh`:

   - 将内存缓冲区中的数据写入到新的 Lucene segment 中。

   - 将新的 segment 加载到文件系统缓存中。

   - 此时,数据已经可以被搜索到。

2. 持久化到磁盘:

   - 将文件系统缓存中的 segment 强制写入磁盘(通过 `fsync` 操作)。

   - 清空事务日志(translog),释放内存和存储空间。

 

总结

调用 `_flush` API 时,Elasticsearch 会先执行 `_refresh` 操作,以确保数据在持久化到磁盘之前已经处于可搜索的状态。因此,`_flush` 操作不仅确保了数据的持久性,还间接保证了数据的搜索可见性。

 

如果你只需要确保数据的搜索可见性,而不需要立即持久化数据,可以单独调用 `_refresh` API。

http://www.xdnf.cn/news/667351.html

相关文章:

  • 火山引擎声音复刻
  • 安全生产例题
  • 知识图谱:AI时代语义认知的底层重构逻辑
  • 游戏引擎学习第314天:将精灵拆分成多个层
  • U 盘数据恢复全攻略
  • 说说 Kotlin 中的 Any 与 Java 中的 Object 有何异同?
  • Go 应用中的 Redis 连接与操作
  • NLua性能对比:C#注册函数 vs 纯Lua实现
  • Nginx--手写脚本压缩和切分日志(也适用于docker)
  • 【Linux】进程状态优先级
  • 【QT】在QT6中读取文件的方法
  • 私服 nexus 之间迁移 npm 仓库
  • Debian 11之解决daemon.log与syslog文件占用空间过大问题
  • pyspark实践
  • [yolov11改进系列]基于yolov11引入感受野注意力卷积RFAConv的python源码+训练源码
  • 手机收不到WiFi,手动输入WiFi名称进行连接不不行,可能是WiFi频道设置不对
  • Matlab实现LSTM-SVM时间序列预测,作者:机器学习之心
  • 链表:数据结构的灵动舞者
  • Linux系统-基本指令(3)
  • 智能体赋能效率,企业知识库沉淀价值:UMI企业智脑的双轮驱动!
  • 【Quest开发】空间音频的使用
  • [AI]大模型MCP快速入门及智能体执行模式介绍
  • HJ25 数据分类处理【牛客网】
  • 小白成长之路-Linux程序与进程(一)
  • Linux 使用 Docker 安装 Milvus的两种方式
  • 记忆术-汉字部首编码记忆
  • APP广告变现,开发者如何判断对接的广告SDK安全合规?
  • CQF预备知识:一、微积分 -- 1.6.1 不定积分详解
  • ctf.show pwn入门 堆利用-前置基础 pwn142
  • 【刷题】数组拼接(超聚变暑期实习笔试)