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

Elasticsearch的写的底层原理

前面有一篇文章讲解了Elasticsearch的读写搜索过程,有的人感觉不太理解,今天我们再来看看这些过程的原理

写数据底层原理

首先是将数据写入到内存buffer中,在这里的时候,数据是搜索不到。他同时会将数据写入到translog日志文件中。

当buffer即将存满,又或者是到了一个定存放时间,它就将内存buffer中的数据刷新到一个新的segment file中。他不是直接进入到磁盘文件,而是先到了os cache中,这就是refresh的过程了。

每1秒钟,elasticsearch会将buffer中的数据写入到一个全新的segment file中,并且会产生一个新的segment file,他是用来存储最近1秒之中buffer写入进来的数据。

假如buffer里面没有数据,就不会执行刷新操作了,如果有数据,则会每1秒执行一次刷新操作,刷进segment file中。

这里我们也需要了解一个东西os cache,这是操作系统中的缓存,当每次有数据要写入到磁盘中的时候,他都会首先进入到os cache中保存,当数据被刷入到os cache 中,这个时候,数据就能够被检索到了。

这样一直重复着上述的步骤。

好了我们来总结一下这个过程:数据首先写入buffer,然后每1秒钟会执行一次刷新,将数据转入到os cache中(这就是为什么我们从elasticsearch写入到他能够被我们检索出来,中间有1秒的延迟的原因了)。之后每隔5秒钟会将数据写入到translog文件内,当此文件增长到一定的成都,或者每隔30分钟,会提交一次,将缓存的数据全部刷新到segment file磁盘中

好了,今天关于Elasticsearch中写操作的底层原理就讲解到这里,欢迎大家留言交流。

也欢迎大家关注我的公众号《coder练习生》

http://www.lryc.cn/news/3528.html

相关文章:

  • 【网络编程】Java中的Socket
  • 有趣的Hack-A-Sat黑掉卫星挑战赛——跟踪卫星
  • Ubuntu安装配置Cuda和Pytorch gpu
  • 三、Java面向对象
  • pygame7 弹球游戏2
  • 计算机网络4:计算机网络体系结构
  • 1630_GNU的二进制分析工具nm简单使用探索
  • 【Redis】Redis高可用之Redis Cluster集群模式详解(Redis专栏启动)
  • 1.8 正则表达式
  • Postgresql 根据单列或几列分组去重row_number() over() partition by
  • 基于蒙特卡洛法的规模化电动车有序充放电及负荷预测(PythonMatlab实现)
  • Selenium常用API详解,从入门到进阶(全套)
  • 自从学会了Python,我实现了壁纸自由(6)
  • Ruby 发送邮件 - SMTP
  • Python爱心代码
  • 【二分查找法及其应用】
  • Android 进阶——Framework核心 之Binder Java成员类详解(三)
  • Maven
  • 1947抓住那头牛(队列 广度优先搜索)
  • 基于linux5.15.5的IMX 参考手册 ---21
  • Android Dalvik虚拟机 堆初始化流程
  • 0讲(补)——开发前必备基本常识
  • JS学习笔记
  • linux005之用户、组管理
  • 列线图工具_Nomogram
  • 【C++】类和对象(一)
  • Python获取搜索引擎结果
  • 2.4.8 PCIe——物理逻辑层——REFCLK
  • 树莓派4B arm64 搭建 docker+drone+gitea
  • Java的JDBC编程