首页 > 其他分享 >elasticsearch写入流程

elasticsearch写入流程

时间:2023-05-18 23:44:06浏览次数:36  
标签:请求 translog 流程 写入 文档 分片 elasticsearch 节点

Elasticsearch的写入文档过程是客户端向Elasticsearch服务发送写入请求,经过多个组件协同工作。

具体步骤如下:

  1. 客户端向Elasticsearch发送写入请求。请求中需要包含以下信息:
  • 索引名称和类型:指明要写入到哪个索引、哪个类型;
  • 文档ID:指明要写入的文档唯一标识符;
  • 数据:要写入的文档内容,通常是JSON格式。
  1. 请求首先会被发送到Elasticsearch的协调节点,协调节点负责控制索引中的分片,它的工作包括:
  • 确定要写入文档的主分片和副本分片的位置;
  • 向主节点发送写入请求;
  • 副本分片复制主分片的写操作。
  1. 写入请求到达主节点后,主节点会采取以下步骤:
  • 生成全局唯一的递增版本号(_version);
  • 在内存中创建文档,并为其分配一个唯一的文档ID(如果没有指定);
  • 将文档写入主分片。
  • 主分片写入成功后,主节点会向客户端发送写入成功的响应。同时,主节点还会将写入操作同步到分配给它的所有副本分片上。
  1. 副本分片接收到同步请求后,会将对应的文档复制到它自己本地的分片中。这样,副本分片就与主分片保持了一致性。

分片写入数据具体步骤如下:

  1. 当分片所在的节点接收到来自协调节点的请求后,会将请求写入到 Memory Buffer,然后定时(默认是每隔 1 秒)写入到 Filesystem Cache,这个从 Momery Buffer 到 Filesystem Cache 的过程就叫做 refresh;

  2. 当然在某些情况下,存在 Momery Buffer 和 Filesystem Cache 的数据可能会丢失,ES 是通过 translog 的机制来保证数据的可靠性的。其实现机制是接收到请求后,同时也会写入到 translog 中,当 Filesystem cache 中的数据写入到磁盘中时,才会清除掉,这个过程叫做 flush;

  3. 在 flush 过程中,内存中的缓冲将被清除,内容被写入一个新段,段的 fsync将创建一个新的提交点,并将内容刷新到磁盘,旧的 translog 将被删除并开始一个新的 translog。

  4. flush 触发的时机是定时触发(默认 30 分钟)或者 translog 变得太大(默认为 512M)时;

标签:请求,translog,流程,写入,文档,分片,elasticsearch,节点
From: https://www.cnblogs.com/bad-joker/p/14238548.html

相关文章

  • TLS1.2握手流程分析(RSA,ECDHE),和TLS1.3区别
    目录一、加密算法简介1.2RSA简要流程1.1ECDHE简要流程二、TLS1.2握手消息简介三、TLS1.2RSA流程四、TLS1.2ECDHE流程五、TLS1.2和TLS1.3区别5.1更快的访问速度5.2更强的安全性六、wareshark抓包验证TLS1.2流程6.1搭建httpsserver(springboot)6.2请求并抓包6.3抓包结果分......
  • 如何搭建高质量的 B 端产品帮助体系?这些流程细节你需要注意!
    对于B端复杂的业务来说,一个良好的帮助体系是非常重要的。在这篇文章中,我会介绍B端产品帮助体系的构建过程,并列举一些常见的案例内容和容易被忽略的流程细节,帮助各位大家搭建高质量的 B 端产品帮助体系。 考虑用户需求体验市场上大部分B端产品,都面临着复杂业务场景和繁多的功能类......
  • APP中RN页面热更新流程-ReactNative源码分析
    平时使用WebStorm或VSCode对RN工程中的文件修改后,在键盘上按一下快捷cmd+s进行文件保存,此时当前调试的RN页面就会自动进行刷新,这是RN开发相比于原生开发一个很大的优点:热更新。那么,从按一下快捷cmd+s到RN页面展示出最新的JS页面,这个过程是怎样发生的呢?下面根据时间顺序来梳理一下......
  • 补充流程控制及基本数据类型的内置方法
    流程控制while+continue例:#请听题:循环打印出0-10之间的数字#请听题:循环打印出0-9之间的数字,但是不打印6count=0whilecount<4:ifcount==2:count+=1continue#是调出本次循环print(count)count+=1运行结果: while+else......
  • 流程控制补充及数据类型内置方法
    流程控制的补充while+continue的使用countinue:跳出本次循环,直接进入下一次循环。eg.1.循环打印出0-10之间的数字:1count=02whilecount<10:3print(count)4count+=1运行结果: eg2. 循环打印出0-9之间的数字,但是不打印5 1count=02whilec......
  • 流程控制和一些字符串内部读取关键词或格式
    1.流程控制1.while+continue立即调出本次循环,同属一个代码块后面的代码都不会进行,直接回到while   //不仅可以用在while中,for循环中也可以例:1#打印出0到5的数字,除了32x=03whilex<=5:4ifx==3:5x+=16continue7els......
  • RocketMQ源码(三):服务端NameSrv启动流程
    有关Namesrv的概念及功能,详见RocketMQ(三):架构设计中技术架构组成namesrv,这里不再赘述。RocketMQ中Namesrv启动入口:org.apache.rocketmq.namesrv.NamesrvStartup。Namesrv启动,NamesrvStartup#main0()核心伪代码:1publicstaticNamesrvControllermain0(String[......
  • 记一次排查:接口返回值写入excel后,从单元格copy出来的数据会带有多重引号的问题
    在项目里刚好有3个服务,同一个网关内层的3个服务,两个php的,一个golang的,为了提高负载以及进行分流,部分客户的接口调用会被网关自动分配到go服务。恰好为了测试,我写了一个全量用户的生产、测试环境调用接口返回结果进行对比的脚本,于是发现了题中的问题:两个php服务里的接口返回值写入......
  • 程序流程结构
    概述C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构1.顺序结构:程序按顺序执行,不发生跳转。2.选择结构:依据是否满足条件,有选择地执行相应功能。3.循环结构:依据是否满足条件,循环多次执行某段代码。if语句#include<stdio.h>#include<stdlib.h>intmain()......
  • Linux下安装ElasticSearch
    1.下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz2.解压安装将下载的文件上传至服务器usr/local/es下 解压压缩包tar-zxvfelasticsearch-6.4.3.tar.gz创建用户,切换用户安装#创建es分组groupaddes#为es分组添加用户es......