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

Elasticsearch:索引状态是红色还是黄色?为什么?

在我之前文章 “Elasticsearch:如何调试集群状态 - 定位错误信息” 中,我有详细介绍如何调试集群状态。在今天的文章中,我将详细介绍如何故障排除和修复索引状态。

Elasticsearch 是一个伟大而强大的系统,特别是创建一个可扩展性极强的分布式数据存储,并自动跟踪、管理和路由索引中的所有数据。

但有时事情会出错,索引会遇到或大或小的麻烦。 这通常最终会导致它们具有红色或黄色的状态。 集群将紧随其后,因为它的状态是所有索引中最差的,例如 如果一个索引为红色,则集群为红色。

如果你的集群和一些索引是红色或黄色的,你会怎么做? 那么,你需要找出原因。 你是怎样做的? 

红色黄色是什么意思?

首先,说一下颜色的含义,因为它们看起来很复杂,但最终很简单:

  • 黄色 —— 一个或多个索引缺少(“未分配 - unassigned”)副本分片。 索引仍在工作,可以完全索引、搜索和提供数据,只是没有我们想要的那么快和可靠。
  • 丢失的碎片可能真的丢失、损坏或有其他问题; 或者集群可能正处于移动或重建这些丢失的分片的过程中。
  • 我们的工作是手动或自动重新创建这些丢失的副本以达到绿色。
  • 红色 —— 一个或多个索引缺少主分片并且无法正常工作,即它无法索引、搜索或提供数据。
  • 请注意,这是基于每个分片的,因此即使有 50 个分片,也只需要一个分片失效即可将索引和集群变为红色。
  • 我们的工作是手动查找或修复这些缺失的主索引,如果可以的话,否则索引就会丢失,必须从快照或原始源数据中重新创建。

查找红色黄色索引

1) 第一步是确定你知道的主要问题,例如死节点、磁盘空间问题等可能产生问题的问题。 这有助于告知我们寻找什么以及我们以后如何修复它。

有时你只需要耐心等待,因为系统通常会通过移动数据来修复自身,例如将副本提升为主要副本,然后重新创建新副本,但这需要时间,从几分钟到更长,具体取决于分片数量和大小, 集群负载、磁盘速度等。

但你不能指望这一点,除非很明显系统正在自我修复。 有时事情真的坏了,这就是为什么了解历史是件好事,因为重启节点肯定会使一些索引变黄,但几分钟后又变绿。

2) 第二步是确定哪些索引有问题,有多少索引有问题。 _cat API 可以通过状态告诉我们:

GET /_cat/indices?v&health=red
GET /_cat/indices?v&health=yellow

从中我们可以了解我们有多少问题,这可能与上面讨论的任何最近事件有关。 我们还需要这个列表,以便我们可以更深入地挖掘每个索引。

3) 第三步是查看哪些分片有问题以及原因。 这与索引列表有关,但索引列表只会告诉你哪些索引有问题,现在我们需要每个分片的问题列表。

我们为此使用 _cat 接口,理想情况下使用排序和一些额外的列,例如这将列出按状态排序的索引,包括未分配的基本原因 - 查找 UNASSIGNED 状态:

GET /_cat/shards?v&h=n,index,shard,prirep,state,sto,sc,unassigned.reason,unassigned.details&s=sto,index

这可能足以了解正在发生的事情,其中有未分配的详细信息列,我们可以从中解决问题。 但有时我们需要更多细节,特别是当我们有节点路由或其他更复杂的问题时。

我们可以询问集群为什么分片没有分配 …

为此,我们可以要求集群解释给定分片的当前分配情况和逻辑。 这有点混乱,因为我们需要上面列表中的两个分片编号(从 0 开始),并且要知道我们是否要查看主分片或副本,同样来自上面的列表。

API 调用是这样的,这里需要设置索引名,分片号,primary true/false:

GET _cluster/allocation/explain
{"index": ".ds-heartbeat-8.6.1-2023.03.27-000001","shard": 0,"primary": true
}

这将使您更详细地了解情况,接下来要做什么取决于您在那里找到的原因。

一些常见问题包括:

  • 磁盘空间不足 —— 没有空间可以分配。请详细阅读文章 “Elasticsearch:Low disk watermark”。
  • 分片计数限制 —— 每个节点的分片太多,这在创建新索引或删除某些节点并且系统无法为它们找到位置时很常见。
  • JVM 或堆限制 —— 一些版本可以在 RAM 不足时限制分配
  • 路由或分配规则 —— 常见的 HA(Highly Available)云或大型复杂系统
  • 损坏或严重问题 —— 可能会出现更多问题,每个问题都需要特别注意或解决方案,或者在许多情况下,只需删除旧分片并添加新副本或主分片。

修复红色和黄色索引

第四步是修复问题。 修复分为几类:

  • 等待并让 Elasticsearch 修复它 —— 对于节点重启等临时情况
  • 手动分配分片 —— 有时需要解决问题
  • 检查路由/分配规则 —— 许多 HA 或复杂系统使用路由或分配规则来控制放置,随着情况的变化,这可能会创建无法分配的分片。 解释应该清楚这一点。
  • 通过将数字设置为 0 来删除所有副本 —— 也许你无法修复副本或手动移动或分配它。 在这种情况下,只要你有一个主节点(索引是黄色的,而不是红色的),你总是可以将副本计数设置为 0,等一下,然后设置回 1 或任何你想要的,使用:“index” :{“number_of_replicas”:0}

我们将在出现状态和解决方案时添加更多详细信息,但这是一个复杂的问题,并且与所有系统一样,修复会根据问题的确切细节和历史记录而有所不同。 

相关文章:

Elasticsearch:索引状态是红色还是黄色?为什么?

在我之前文章 “Elasticsearch:如何调试集群状态 - 定位错误信息” 中,我有详细介绍如何调试集群状态。在今天的文章中,我将详细介绍如何故障排除和修复索引状态。 Elasticsearch 是一个伟大而强大的系统,特别是创建一个可扩展性极…...

一对多关系映射

在MyBatis中,可以使用XML文件或者注解来进行关系映射。其目的就是将Java对象和数据库表进行映射,从而可以方便地进行数据的操作。 MyBatis关系映射数据库表到Java对象的映射SQL语句到Java方法的映射定义Java类,在XML文件中定义这个Java类和数据库表之间的映射关系定义Java方…...

字母有重复全排列 [2*]

目录 字母有重复全排列 [2*] 程序设计 程序分析 字母有重复全排列 [2*] 输出前N个字母的有重复全排列 Input 输入一个数值N 1<=N<=10 Output 输出前N个大写字母的有重复全排列 Sample Input 2 Sample Output...

机器学习中的数学原理——过拟合、正则化与惩罚函数

通过这篇博客&#xff0c;你将清晰的明白什么是过拟合、正则化、惩罚函数。这个专栏名为白话机器学习中数学学习笔记&#xff0c;主要是用来分享一下我在 机器学习中的学习笔记及一些感悟&#xff0c;也希望对你的学习有帮助哦&#xff01;感兴趣的小伙伴欢迎私信或者评论区留言…...

RK3588S imx415摄像头调试

一、环境 soc&#xff1a;rk3588sensor&#xff1a;imx415board: AIO-3588SJDlinux&#xff1a;rk3588_linux_release_20230301_v1.0.6e 二、imx415简介 品牌&#xff1a;SONY型号&#xff1a;IMX415接口&#xff1a;MIPI CSI 三、驱动移植 瑞芯微支持的摄像头&#xff0c;有…...

「SAP ABAP」OPEN SQL(七)【GROUP BY | HAVING | ORDER BY】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…...

容器-LinkedList

LinkedList LinkedList的概述 LinkedList的底层使用双向链表实现。 链表是一种线性数据结构&#xff0c;其中每个元素都是一个单独的对象&#xff0c;包含一个指向列表中下一个节点的引用。 它可以用于实现各种抽象数据类型&#xff0c;例如列表、堆栈、队列等。 LinkedLis…...

Flask 路由和视图函数

Flask 路由和视图函数一、路由 (Routing)二、视图函数 (View Functions)三、动态路由四、HTTP方法五、总结在Flask中&#xff0c;路由和视图函数是两个核心概念&#xff0c;它们协同工作以处理用户请求并生成响应。一、路由 (Routing) 路由是URL到Python函数的映射。当用户访问…...

Linux主机 SSH 通过密钥登录

我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是&#xff0c;一般的密码方式登录&#xff0c;容易有密码被暴力破解的问题。所以&#xff0c;一般我们会将 SSH 的端口设置为默认的 22 以外的端口&#xff0c;或者禁用 root 账户登录。其实&#xff0c;有一个更…...

中国信息安全测评中心-自主原创测评

信息技术产品自主原创测评是适应我国经济社会发展的需要&#xff0c;是适应国际知识产权保护的发展趋势&#xff0c;鼓励信息技术产业的自主创新和维护权利人合法权益的重要举措。 信息技术产品自主原创测评业务是指在开发者自主声明的基础上&#xff0c;通过对关键技术实现的全…...

redis杂谈之部分重同步的实现

背景&#xff1a; 部分重同步则用于处理断线后重复制情况&#xff1a;当从服务器在断线 后重新连接主服务器时&#xff0c;如果条件允许&#xff0c;主服务器可以将主从服务器连 接断开期间执行的写命令发送给从服务器&#xff0c;从服务器只要接收并执行这 些写命令&#xff…...

多态部分参考答案

一、选择题 1、下列关于动态联编的描述中&#xff0c;错误的是&#xff08;&#xff09;。 A&#xff0e;动态联编是以虚函数为基础 B&#xff0e;动态联编是运行时确定所调用的函数代码的 C&#xff0e;动态联编调用函数操作是指向对象的指针或对象引用 D&#xff0e;动态联编…...

【高项】项目人力资源管理,沟通管理与干系人管理(十大管理)

【高项】项目人力资源管理&#xff0c;沟通管理与干系人管理&#xff08;十大管理&#xff09; 文章目录1、人力资源管理1.1 什么是人力资源管理&#xff1f;1.2 如何进行人力资源管理&#xff1f;&#xff08;过程&#xff09;1.3 人力资源管理工具1.4 人力资源管理文件2、沟通…...

Wikijs简介-强大可扩展的开源维基软件

Wikijs - 最强大 最可扩展的开源维基软件 使用 wiki.js 美丽直观的界面&#xff0c;让文档成为写作的乐趣&#xff01; 优点 &#x1f527; 随时随地安装 几乎适用于任何平台&#xff0c;并与PostgreSQL、MySQL、MariaDB、MS SQL Server 或 SQLite 兼容&#xff01; ⚙️ 管…...

微博舆情分析系统的设计与实现(python)

背景分析 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,微博舆情分析系统的资讯信息通过网络进行信息管理掀起了热潮,所…...

【AUTOSAR】【Lin通信】LinTrcv

目录 一、概述 二、功能说明 2.1 LIN收发器驱动程序操作模式 2.2 LIN收发器硬件操作模式 2.3 LIN收发器唤醒类型 2.4 LIN收发器唤醒模式 2.5 错误分类 2.5.1 开发错误 三、API接口 3.1 API定义 一、概述 该规范规定了模块LIN收发器驱动程序的功能、API和配置。它负责…...

UE4C++学习篇(十九)-- 动画蒙太奇初级使用

用一个第三人称的射击案例来简单介绍一下动画蒙太奇的使用&#xff0c;动画蒙太奇的具体介绍这里就不多说了&#xff0c;不知道的小伙伴可以去搜一下了解。 这里介绍角色射击&#xff0c;射击的时候播放一个射击动画。 选中需要创建出动画蒙太奇的动画&#xff0c;点击创建&am…...

子集和问题

目录 子集和问题 程序设计 程序分析 子集和问题 【问题描述】子集和问题的一个实例为〈S,c〉。其中,S={ x1 , x2 ,…,xn }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得: 试设计一个解子集和问题的回溯法。 对于给定的正整数的集…...

苹果蓝牙耳机太贵了买哪个替代?苹果蓝牙耳机平替推荐

随着人们生活水平的提高&#xff0c;蓝牙耳机已经遍布在我们生活的各个角落。同时随着科技的发展&#xff0c;许多人果粉选择苹果耳机平替。下面我们一起来看看2023年有哪些适用于苹果的平替蓝牙耳机吧&#xff01; 一、南卡小音舱Lite2蓝牙耳机 蓝牙版本&#xff1a;5.3 售…...

CK-UR05-US桌面式超高频RFID发卡器开发手册之USB控制命令格式

CK-UR05-US桌面式超高频RFID发卡器支持USB控制命令格式&#xff0c;本文重点就此格式展开说明&#xff01; CK-UR05-US桌面式超高频RFID发卡器1、取版本号(GetReaderVersion) 功能:取读写器的硬件、软件版本 命令码: 02H 命令参数:无 命令包: 『40H 02H 02H BCH』 举例: 如…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...

【Pandas】pandas DataFrame dropna

Pandas2.2 DataFrame Missing data handling 方法描述DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值&#xff08;NaN&#xff09;DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充&#xff08;即“下一个有效观测值”&#xff09…...

Linux系统:进程间通信-匿名与命名管道

本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道&#xff08;Pipe&#xff09;是一种进程间通信&#xff08;IPC, Inter-Process Communication&#xff09;机制&#xff0c;用于在不…...