聊一聊Elasticsearch的索引分片的恢复机制

1、什么是索引分片的恢复?

所谓索引分片的恢复指的是在某些条件下,索引分片丢失,ES会把某索引的分片复制一份来得到该分片副本的过程。

2、触发分片恢复的场景有哪些?

  • 分片的分配

    当集群中节点的数量发生变化,或者配置了分片的过滤,使得某节点上的分片需要移动到另外一个节点上,就需要进行分片的分配。在分片分配的过程当中,当某个索引的分片缺失,则会通过分片恢复来创建对应的分片。

  • 增加索引的副本数

  • 从索引备份的快照中恢复数据

3、分片恢复的类型

  • 从本地分片复制而来,称为本地存储恢复(local store recovery)。
  • 从其他节点上分片复制而来,称为对等恢复(peer recovery)。
  • 从索引备份的快照文件中恢复的,称为快照恢复(snapshot recovery)。

4、分片恢复的过程

我们假设在一个有3个节点(节点1、节点2、节点3)的集群中创建一个索引(test_index),该索引有3个主分片(P1、P2、P3),每个主分片有1个副本分片(R1、R2、R3)。经过分片分配,每个节点上被分配2个分片,如下图:
在这里插入图片描述
让我们来看看此时的分片分配过程都发生了什么?首先在创建索引的时候,分别在3个节点上创建3个主分片,这三个主分片是在本地创建了3个空分片。然后会将这3个主节点复制到其他节点上产生副本分片(这3个副本分片是从其他节点上的分片复制而来,所以这里发生了3次对等恢复)。

我们再假设下如果节点3下线了会发生什么?节点3下线后,首先要将节点3上的主分片P0恢复,将P0复制到节点1上(我的理解是将节点1上的副本分片R0选举为新的P0主分片),如图:
在这里插入图片描述
然后将缺失的副本(R0、R2)恢复,即分别从节点1上的P0复制到节点2上形成R0,从节点2上的P2复制到节点1上形成R2,如图:
在这里插入图片描述

5、减少不必要的分片恢复

在生产环境中,通常会有很多节点、索引、分片,且索引分片的容量都比较大,若某个节点临时断网或者集群重启时未及时启动所有节点,就会使集群增加很多不必要的分片恢复。

我们可以通过以下两种方式来尽量避免这些不必要的分片恢复:

  1. 延时分片恢复:ES提供了一种索引级别的动态配置,可以通过来指定节点下线多久后开始分片恢复,默认是1分钟。
  2. 调整触发分片恢复的条件:通过ES的elasticsearch.yml文件中添加与网关相关的配置来设置分片恢复的触发条件。

6、参考文献

  • 《Elasticsearch数据搜索与分析实战》——王深湛

上一篇:《聊一聊Elasticsearch的索引的分片分配机制》
下一篇:《聊一聊Elasticsearch的索引数据搜索过程》

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

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

相关文章

字符串的基本操作(C语言版)

一、实验内容: 采用顺序结构存储串,编写一个函数substring(strl,str2),用于判定str2是否为strl的子串;编写一个函数,实现在两个已知字符串中找出所有非空最长公共子串的长度和最长公共子串的个数; ①字符…

一些任务调度的概念杂谈

任务调度 1.什么是调度任务 依赖:依赖管理是整个DAG调度的核心。调度依赖包括依赖策略和依赖区间。 依赖分为任务依赖和作业依赖,任务依赖是DAG任务本身的依赖关系,作业依赖是根据任务依赖每天的作业产生的。两者在数据存储模型上有所不同…

C#可空类型详解:定义、判断值与访问方法

C#中的可空类型(Nullable Types) 在C#中,值类型(如int、float、struct等)默认情况下不能表示“无值”或“未知”的状态。为了解决这个问题,C#引入了可空类型(Nullable Types)&#…

解决 npm xxx was blocked, reason: xx bad guy, steal env and delete files

问题复现 今天一位朋友说,vue2的老项目安装不老依赖,报错内容如下: npm install 451 Unavailable For Legal Reasons - GET https://registry.npmmirror.com/vab-count - [UNAVAILABLE_FOR_LEGAL_REASONS] vab-count was blocked, reas…

o1的风又吹到多模态,直接吹翻了GPT-4o-mini

开源LLaVA-o1:一个设计用于进行自主多阶段推理的新型VLM。与思维链提示不同,LLaVA-o1独立地参与到总结、视觉解释、逻辑推理和结论生成的顺序阶段。 LLaVA-o1超过了一些更大甚至是闭源模型的性能,例如Gemini-1.5-pro、GPT-4o-mini和Llama-3.…

共建智能软件开发联合实验室,怿星科技助力东风柳汽加速智能化技术创新

11月14日,以“奋进70载,智创新纪元”为主题的2024东风柳汽第二届科技周在柳州盛大开幕,吸引了来自全国的汽车行业嘉宾、技术专家齐聚一堂,共襄盛举,一同探寻如何凭借 “新技术、新实力” 这一关键契机,为新…

Django:从入门到精通

一、Django背景 Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发…

解决.DS_Store 在项目一致无法排除,.gitignore里也不生效

.DS_Store 是 macOS 操作系统创建的隐藏文件,通常用于存储目录的属性,比如视图设置、图标位置等。它通常不应包含在代码仓库中,因此需要排除它。你提到即使将其添加到 .gitignore 文件中,仍然无法排除它,可能是由于以下…

Qt桌面应用开发 第四天(对话框 界面布局)

目录 1.对话框 1.1模拟对话框 1.2非模拟对话框 1.3消息对话框 1.3.1询问对话框 1.3.2严重错误对话框 1.3.3信息提示对话框 1.3.4警告对话框 1.4其他对话框 1.4.1颜色对话框 1.4.2文件对话框 1.4.3字体对话框 1.5界面布局 1.对话框 1.1模拟对话框 会阻塞同一应用…

一文带你快速初步了解云计算与大数据

目录 🔍一、云计算基础 1、云计算的概念、特点、关键技术 2、云计算的分类 3、云计算的部署模式 4、云计算的服务模式:IaaS、PaaS、SaaS分别是什么,具体含义要清楚 5、物联网的概念 6、物联网和云计算、大数据的关系 7、了解云计算的…

PC上浏览器是如何查询DNS 缓存的?

通过 ipconfig /displaydns 的显示结果可以获取本机的 DNS 缓存信息,那么浏览器是如何获取本机的 DNS 缓存。 答案是:浏览器获取本机的 DNS 缓存主要是通过操作系统提供的接口来获取,。 具体的获取途径如下: 先查询自身缓存&am…

【新人系列】Python 入门(十一):控制结构

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…

【CVPR2024】2024年CVPR的3D 目标检测的综述(还在补充中)

透视单目DETR 2D 透视单目DETR 2D的。对于DETR系列消除了 NMS的2D目标检测,RT-DETR[8]设计了一个高效的混合编码器,通过解耦尺度内交互和跨尺度融合来提高速度。采用不确定性最小查询选择,为解码器提供高质量的初始查询,从而提高准确率。 透视单目3D 透视单目3D。MonoCD…

VideoCrafter模型部署教程

一、介绍 VideoCrafter是一个功能强大的AI视频编辑和生成工具,它结合了深度学习和机器学习技术,为用户提供了便捷的视频制作和编辑体验。 系统:Ubuntu22.04系统,显卡:4090,显存:24G 二、基础…

Python自动化测试实践中pytest用到的功能dependency和parametrize

Python自动化测试中pytest用到的功能 1、pytest之@pytest.mark.dependency装饰器设置测试用例之间的依赖关系 1.1说明: 1、这是一个pytest第三方插件,主要解决用例之间的依赖关系。如果依赖的上下文测试用例失败后续的用例会被标识为跳过执行,相当于执行了 pytest.mark.s…

Ubuntu Linux使用前准备动作 安装VMware Tools工具

Ubuntu Linux 能够安装开源的 VMware tools 工具,即 Open VM Tools。具体安装步骤如下 1)打开终端:可以通过按下 Ctrl Alt T 组合键来打开终端。 2)安装 Open-VM-Tools 软件包 在终端中输入以下命令来更新软件包列表并安装 O…

Harmony鸿蒙类似与Android中broadcast广播的api使用及释义

EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。 这里需要注意,该模块接口仅可在Stage模型下使用。且Api>9 EventHub.on on(event: string, callback: Function): void; 订阅指定事件。(接收广播) 参…

机器翻译基础与模型 之二: 基于CNN的模型

一、CNN网络 相比于全连接网络,卷积神经网络最大的特点在于具有局部连接(Locally Connected)和权值共享(Weight Sharing)的特性。 1.1 卷积核与卷积操作 1.2 步长与填充 1.3 池化 以上关于CNN的基础概念和技术就不…

嵌入式Linux的RTC读写操作应用

嵌入式Linux的RTC读写操作应用 一、前提二、头文件引用三、设置RTC时间四、读取RTC当前时间 一、前提 嵌入式开发中经常有碰到读取和修改时间的需求,所以会经常用到RTC这个功能。首先保证你的开发板上具有RTC这个模块和支持RTC且能正常工作,然后再进行应…

Vue 3集成海康Web插件实现视频监控

​🌈个人主页:前端青山 🔥系列专栏:组件封装篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:Vue 3集成海康Web插件实现视频监控 引言 最近在项目中使用了 Vue 3 结合海康Web插件来实…