ES数据写入过程

1. 写入请求

当一个写入请求(如 IndexUpdate 或 Delete 请求)通过REST API发送到Elasticsearch时,通常包含一个文档的内容,以及该文档的索引和ID。

2. 请求路由

  • 协调节点:首先,请求会到达一个协调节点(coordinating node)。该节点负责将请求路由到适当的数据节点(data node)。
  • 路由:基于文档的ID和索引的分片配置,Elasticsearch计算该文档应该存储在哪个主分片上,以确保数据均匀分布。根据路由算法,该文档在哈希表中的位置决定了它的存储位置。

默认路由:使用文档的ID进行哈希计算,与索引的主分片数量进行取模运算,以确定文档存储的具体分片。

自定义路由:使用 routing 参数,在写入文档时,可以使用routing参数指定自定义路由。这将覆盖默认的基于文档ID的路由逻辑。

3. 主分片和副本分片

  • 主分片:协调节点将写入请求发送到负责存储文档的主分片(primary shard)数据节点。
  • 副本分片:在写入操作完成后,Elasticsearch将数据复制到配置的副本分片(replica shard)以确保高可用性。副本用于提供冗余和负载均衡。

4. 内存写入

  • 事务日志(Translog):在写入操作到达主分片后,Elasticsearch会首先将文档写入到一个称为“事务日志”的文件中。这一过程在内存中进行,以便在意外失败时能够保持数据的完整性。事务日志记录了所有的写入操作,包括新增、更新和删除。

  • 内存缓冲:在确认写入事务日志后,Elasticsearch会将文档的内容写入到内存中,并缓冲起来。内存中的数据结构称为“索引缓冲区”(index buffer)。

5. 刷新(Refresh)

  • 刷新操作:每隔一段时间,Elasticsearch会进行一次“刷新”操作,它会将内存中的索引缓冲区的数据刷新到磁盘上,使这些数据变得可搜索。默认情况下,Elasticsearch每1秒进行一次刷新。

  • 刷新过程:在刷新过程中,Elasticsearch会为当前的文档创建新的段(segment),并把它们写入到磁盘。在此期间,新的写入操作仍可以在不影响正在进行的搜索的情况下进行。

6. 索引(Index)过程

  • 分词:对于文本类型的字段,Elasticsearch还会对文本进行分词处理,以便在创建索引时使用其关键词(tokens)进行搜索。

  • 倒排索引:Elasticsearch通过倒排索引将文档中的每个词映射到包含该词的文档。这一过程是在分片内部完成的,从而提高了搜索速度。

7. 合并(Merge)

  • 段合并:随着时间的推移,Elasticsearch会将多个小段合并成较大的段,以提升存储效率和搜索性能。这一过程是自动进行的,通常在写入和获取请求的低峰期执行。

8. 返回响应

所有操作完成后,Elasticsearch返回写入请求的响应,包括操作是否成功及相应的元数据(如文档ID和版本号等)。

9. 容错和重试

  • 失败处理:如果写入请求失败,Elasticsearch会记录错误,并可以配置重试机制。

  • 副本确认:对于高可用性要求的场景,Elasticsearch支持在确认写入完所有副本分片后再返回成功响应,可以通过设置 wait_for_active_shards来控制这一行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务日常总结

1.当我们在开发中,需要连接多个库时,可以在yml中进行配置。 当在查询的时候,跨库时,需要通过DS 注解来指定,需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中,需要再字段 的占位符后面加上j…

Python 用pandas连接Postgresql库

pandas确实蛮强的,记录使用的代码 from sqlalchemy import create_engine import pandas as pd import os# 从环境变量中读取数据库连接信息 user os.getenv(DB_USER, xxx) # 数据库用户名 password os.getenv(DB_PASSWORD, xxx) # 数据库密码…

HarmonyOS(53) 获取设备标志符UUID和ODID

UUID和ODID UUID和ODID简介UUID生成规则ODID生成规则相关代码参考资料 UUID和ODID简介 在APP开发过程中,经常需要一些唯一标识符作为留痕使用,HaymonyOS也提供了UUID和ODID来满足类似的工作。 UUID:应用卸载重新安装时会重新生成UUIDODID:手…

Zookeeper 官方示例2-SyncPrimitive 代码解读(二)

测试命令 java jar .\ZookeeperDemo-0.0.1-SNAPSHOT.jar bTest 192.168.206.100:2181 2 1. Barrier(阻塞原语) 1.1 概念 [!quote] A barrier is a primitive that enables a group of processes to synchronize the beginning and the end of a comput…

Nginx负载均衡静态资源缓存配置指南

引言 Nginx 是一款高性能的 HTTP 服务器和反向代理,广泛用于提供负载均衡服务。在处理静态资源时,合理配置 Nginx 的缓存机制可以显著提高应用性能和响应速度。本文将详细介绍如何在 Nginx 负载均衡中配置静态资源的缓存。 静态资源缓存的重要性 静态…

【业务】4A

目录 账号管理(Account Management)认证管理(Authentication Management)授权管理(Authorization Management)审计管理(Audit Management) 账号管理(Account Management&…

zsh 的补全系统

在 Zsh 中,自动提醒(自动补全)功能通常由 zsh 的补全系统(zsh-completions)和 zsh-autosuggestions 等插件提供。如果你的 Zsh 不再自动提醒了,可以通过以下步骤来检查和启用这些功能。 1. 确保补全系统已…

C/C++趣味编程

文章目录 热门文章每日十练1. 计算圆的面积2. 计算两个整数的最大公约数(GCD)3. 检查一个数是否为回文数4. 输出斐波那契数列5. 检查一个数是否为质数(素数)6. 将摄氏温度转换为华氏温度7. 使用递归计算阶乘8. 计算两个数的LCM&am…

vulhub xxe靶机

先用御剑扫描出ip然后进入网页 进入robots.txt里面会发现俩个目录然后我们进去xxe里面 进入xxe页面进行登录&#xff0c;burp抓包 然后进入重放器 可以看到关于密码和用户名的是xml,那么就可以考虑用xxe注入 <?xml version"1.0" ?> <!DOCTYPE r [ <!…

监视SQL Server 内存使用量

文章目录 I 监视SQL Server 内存使用量确定页生存期确定当前的 SQL Server 内存利用率有关当前分配内存的信息II 等待资源池 %ls (%ld)中的内存资源来执行该查询时发生超时。 请重新运行查询。原因查看服务器级别设置的超时值资源信号灯 DMV sys.dm_exec_query_resource_semaph…

IP网络广播系统(IP网络广播系统是什么及它的优势与应用)

一、引言 在当今数字化的时代&#xff0c;音频传播技术也在不断革新。IP网络广播系统作为一种先进的音频传输解决方案&#xff0c;正逐渐在各个领域发挥重要作用。那么&#xff0c;究竟什么是IP网络广播系统呢&#xff1f;它又有着怎样独特的优势和广泛的应用呢&#xff1f;本…

《ARM Cortex-R 学习指南》-【第十二章】-Fault Detection and Control Features

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】个人博客笔记导读目录(全部) 第十二章 故障检测与控制特性 Fault Detection and Control Features 在硅芯片设备中,杂散辐射和其他效应可能导致存储在RAM中的数据损…

破圈之路——写在创作纪念日

缘起 高中时读《明朝那些事儿》,作者当年明月引用一句话作为整个系列的开始和结尾,这句话是:“选择了这条路,就再也不能回头”。 十年前,还在备战高考的我从没想过我会成为一名程序员,正如二十年前的那个小学生第一次作文获奖时也从没想过十年后的他会选择理科一样。改变…

设计模式—2—单例模式

文章目录 一、单例模式概述二、单例模式特点三、示例3.1、基本实现&#xff08;懒汉式-线程不安全&#xff09;3.2、基本实现&#xff08;懒汉式-线程安全&#xff09;3.3、基本实现&#xff08;饿汉式&#xff09; 四、总结 一、单例模式概述 单例模式&#xff08;Singleton …

深度学习(二)-损失函数+梯度下降

损失函数 损失函数&#xff08;Loss Function&#xff09;&#xff0c;也有称之为代价函数&#xff08;Cost Function&#xff09;&#xff0c;用来度量预测值和实际值之间的差异。 损失函数的作用 度量决策函数f&#xff08;x&#xff09;和实际值之间的差异。 作为模型性能…

检测CSRF漏洞的工具

免责声明此文档仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&…

二百五十九、Java——采集Kafka数据,解析成一条条数据,写入另一Kafka中(一般JSON)

一、目的 由于部分数据类型频率为1s&#xff0c;从而数据规模特别大&#xff0c;因此完整的JSON放在Hive中解析起来&#xff0c;尤其是在单机环境下&#xff0c;效率特别慢&#xff0c;无法满足业务需求。 而Flume的拦截器并不能很好的转换数据&#xff0c;因为只能采用Java方…

javascript数据结构与算法-- 二叉树

javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构。树是一种非线性的数据结构&#xff0c;以分成的方式存储数据&#xff0c;树被用来存储具有层级关系的数据&#xff0c;比如文件系统的文件&#xff0c;树还被用来存储有序列表。我们要研究的是二叉…

IObit Uninstaller Pro v13.6.0.5 绿色便携免安装版本 下载

功能非常强大好用的软件卸载清理工具 下载地址(资源制作整理不易&#xff0c;下载使用需付费&#xff0c;不能接受请勿浪费时间下载) 链接&#xff1a;https://pan.baidu.com/s/1I7lbixooii9ezSrp3X-y-w?pwd716l 提取码&#xff1a;716l

d3dcompiler_47.dll缺失的可能原因多种多样,那么d3dcompiler_47.dll缺失怎么修复

在数字世界的深处&#xff0c;d3dcompiler_47.dll文件扮演着至关重要的角色&#xff0c;它是Direct3D编译器的一部分&#xff0c;负责处理图形渲染和游戏运行中的关键任务。然而&#xff0c;当用户启动某个程序或游戏时&#xff0c;屏幕上突然弹出的错误提示“d3dcompiler_47.d…