一、ElasticSearch 写数据的总体流程:

(1)ES 客户端选择一个节点 node 发送请求过去,这个节点就是协调节点 coordinating node

(2)协调节点对 document 进行路由,通过 hash 算法计算出数据应该落在哪个分片shard 上,然后根据节点上维护的 shard 信息,将请求转发到对应的实际处理节点node上

shard = hash(document_id) % (num_of_primary_shards),

(3)实际的节点上的primary shard 主分片处理请求,然后将数据同步到副本节点replica node

(4)coordinating node 等到primary node 和所有 replica node 都执行成功之后,就返回响应结果给客户端。

二、ES 的主分片写数据的详细流程:

1、refresh 操作:

primary shard 主分片先将数据写入 memory buffer,然后定时(默认每隔1s)将memory buffer 中的数据写入一个新的 segment 文件中,并进入Filesystem cache(同时清空 memory buffer),这个过程就叫做 refresh;每个 Segment 文件实际上是一些倒排索引的集合, 只有经历了 refresh 操作之后,这些数据才能变成可检索的。

ES 的近实时性:当数据存在 memorybuffer 时是搜索不到的,只有数据被 refresh 到Filesystem cache 之后才能被搜索到,而 refresh 是每秒一次,所以称 es 是近实时的,或者可以通过手动调用es 的 api 触发一次 refresh 操作,让数据马上可以被搜索到;

上文讲到的memory buffer,也称为 Indexing Buffer,这个区域默认的内存大小是10% heap size。

2、写 translog 事务日志文件:

由于memoryBuffer 和 Filesystem Cache 都是基于内存,假设服务器宕机,那么数据就会丢失,所以 ES 通过 translog 日志文件来保证数据的可靠性,在数据写入memory buffer 的同时,将数据写入 translog 日志文件中,在机器宕机重启时,es 会从磁盘中读取 translog 日志文件中最后一个提交点 commit point 之后的数据,恢复到 memorybuffer 和 Filesystem cache 中去。

ES 数据丢失的问题:translog 也是先写入 Filesystem cache,然后默认每隔 5 秒刷一次到磁盘中,所以默认情况下,可能有 5 秒的数据会仅仅停留在memorybuffer 或者 translog 文件的 Filesystem cache中,而不在磁盘上,如果此时机器宕机,会丢失 5 秒钟的数据。也可以将 translog 设置成每次写操作必须是直接 fsync 到磁盘,但是性能会差很多。

3、flush 操作:

不断重复上面的步骤,translog 会变得越来越大,当 translog 文件默认每30分钟或者阈值超过 512M 时,就会触发 flush 操作,将 memory buffer 中所有的数据写入新的 Segment 文件中, 并将内存中所有的 Segment 文件全部落盘,最后清空translog 事务日志。

  • (1)将 memory buffer 中的数据 refresh 到 Filesystem Cache中的一个新的 segment 文件中去,然后清空memory buffer;
  • (2)创建一个新的 commit point(提交点),同时强行将 Filesystem Cache 中目前所有的数据都 fsync 到磁盘文件中;
  • (3)删除旧的translog 日志文件并创建一个新的translog 日志文件,此时 flush 操作完成

ES的 flush 操作主要通过以下几个参数控制:

  • index.translog.flush_threshold_period:每隔多长时间执行一次flush,默认30m
  • index.translog.flush_threshold_size:当事务日志大小到达此预设值,则执行flush,默认512mb
  • index.translog.flush_threshold_ops:当事务日志累积到多少条数据后flush一次。

ElasticSearch搜索引擎:数据的写入流程相关推荐

  1. Elasticsearch大数据量写入调优和原理解析

    前言 千万.亿级别数据批量写入ES的调优和原理解析 Elasticsearch version (bin/elasticsearch --version): 7.8 Plugins installed ...

  2. 大数据_Hbase-(数据写入流程)---Hbase工作笔记0009

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上一节咱们详细的说了,hbase如何去读数据,读数据的原理. 咱们知道hbase,不能实现即席查询 ...

  3. ElasticSearch搜索引擎: 内存分析与设置

    在 Elasticsearch 的运行过程中,如何合理分配与设置内存是一件十分重要的事情,否则十分容易出现各种问题. 一.Elasticsearch为什么吃内存: 我们先看下 ES 服务器的总体内存消 ...

  4. ElasticSearch搜索引擎常见面试题总结

    一.ElasticSearch基础: 1.什么是Elasticsearch: Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索 ...

  5. ElasticSearch倒排索引原理 数据的写入与查询过程

    Elasticsearch在生产中充当的角色 业务上,最早启用Elasticsearch(下称ES)是为了解决模糊查询的问题.具体业务场景为大量抓取回来的短视频内容.热门微博.公众号文章.小红书笔记. ...

  6. 一步一步学爬虫(4)数据存储之Elasticsearch搜索引擎存储

    Elasticsearch搜索引擎存储 1. Elasticsearch 介绍 2. Elasticsearch 相关概念 3. 准备工作 3.1 下载程序 3.2 解压缩,配置文件修改 4. 创建索 ...

  7. php操作ElasticSearch搜索引擎流程详解

    更多python.php教程请到友情连接: 菜鸟教程https://www.piaodoo.com 茂名一技http://www.enechn.com ppt制作教程步骤 http://www.tpy ...

  8. HBase - 数据写入流程解析

    本文由  网易云 发布. 作者:范欣欣 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 众所周知,HBase默认适用于写多读少的应用,正是依赖于它相当出色的写入性能:一个100台RS的集群可以轻 ...

  9. 【Elasticsearch】Elasticsearch 优化写入流程实现NRT近实时(filesystem cache,refresh)

    现有流程的问题,每次都必须等待fsync将segment刷入磁盘,才能将segment打开供search使用,这样的话,从一个document写入,到它可以被搜索,可能会超过1分钟!!!这就不是近实时 ...

  10. hfds_HFDS的数据写入流程

    1.HFDS的数据写入流程的基本参数 首先了解数据写入过程中,什么是block, packet, chunk 1.block:数据块,当上传的文件太大时, 就需要分块,一个块默认设置时128M, 在客 ...

最新文章

  1. 编程软件python中的if用法-适合Python初学者的一些编程技巧
  2. search strategies
  3. FFmpeg再学习 -- Windows下安装说明
  4. 选择结构_标准的switch语句
  5. 第九周项目6-穷举法之年龄几何
  6. Project查看资源分配情况
  7. 使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
  8. 截至11日14时37分,“11.11京东全球好物节”累计下单金额突破1794亿元
  9. goldendict设置使用vlc或mplayer发音
  10. dwz怎么使用数据加载中提示_SOLIDWORKS在使用中提示内存不足怎么办?
  11. 事件冒泡、事件捕获、事件委托
  12. Bootstrap 按钮的使用
  13. Numpy 学习笔记 ——IndexingSlicing 几点心得
  14. wine模拟器linux,Wine模拟器使用手册(转)
  15. dcs常用的冗余方式_冗余技术在DCS平台应用分析
  16. Nofollow标签的写法以及nofollow使用介绍
  17. 谷歌浏览器崩溃之错误代码:RESULT_CODE_MISSING_DATA
  18. 手机怎么把照片转JPG格式?这两种方法可以迅速转换
  19. JS拖拽效果,代码精干,通俗易懂!
  20. 接入阿里云短信,OSS,实人认证

热门文章

  1. 一键重启tomcat
  2. 杰里之AD15N 功能说明【篇】
  3. wifi 小米pro 驱动 黑苹果_【黑果小兵】小米Pro macOS High Sierra 10.13黑苹果安装教程...
  4. 语音识别竞品分析报告
  5. linux at24测试程序,C51读写AT24C04源代码及AT24C04测试程序
  6. linux服务器运维基础学习
  7. 超图openlayers
  8. 阿特拉斯开发协议--与ATLAS 扭力控制器交互
  9. 运动控制芯片 Motion Control ICs
  10. 【详解】P问题、NP问题和NPC问题详解(千禧年问题之首)