【Elasticsearch 】悬挂索引(Dangling Indices)

server/2025/2/2 11:24:21/

Elasticsearch 悬挂索引(Dangling Indices)解析与管理

1. 悬挂索引的定义

悬挂索引(Dangling Indices)是指存在于节点上但未被集群元数据识别的索引分片。这些索引分片不会参与到集群的正常索引操作中。

2. 悬挂索引的产生原因

悬挂索引通常由以下几种情况产生:

  • 节点离线后重新加入集群:当某个节点因故障(如宕机)暂时离开集群,而该节点上存有的某些索引分片在集群的其他节点上没有副本时,这些索引分片在节点重新加入集群后会被标记为“悬挂”状态。

  • 删除索引数量超过限制:如果在某个节点离线期间删除的索引数量超过了cluster.indices.tombstones.size的限制,这些索引在节点重新加入集群后也会变成悬挂索引。

  • 集群丢失主节点:如果原始集群丢失了所有主节点,而某个节点被添加到另一个集群中,该节点上的索引数据可能不会被新集群的元数据识别,从而变成悬挂索引。

  • 从备份还原:从备份中还原了老的索引文件,但这些索引文件未被集群元数据识别。

3. 悬挂索引的管理方法

Elasticsearch 提供了专门的悬挂索引 API 来手动管理和恢复这些索引,以确保数据的安全性和一致性。

  • 列出悬挂索引

    bash复制

    GET /_dangling

    该 API 会列出所有悬挂索引,返回结果包括索引名称、UUID、创建时间等信息。

  • 导入悬挂索引

    bash复制

    POST /_dangling/<index-uuid>?accept_data_loss=true

    该 API 用于将悬挂索引导入到集群中。使用时需要谨慎,因为可能会导致数据丢失。

  • 删除悬挂索引

    bash复制

    DELETE /_dangling/<index-uuid>?accept_data_loss=true

    该 API 用于删除悬挂索引。同样,使用时需要谨慎,因为这将导致数据永久丢失。

4. 处理悬挂索引的建议

处理悬挂索引时,建议根据具体情况选择合适的方法:

  • 删除悬挂索引:如果悬挂索引的数据不再需要,可以直接删除,但会导致数据丢失。

  • 删除集群中已存在的同名索引:如果悬挂索引与集群中已存在的索引重名,可以删除集群中的同名索引,然后导入悬挂索引。

  • 重命名集群中的索引:如果需要保留集群中的同名索引,可以先重命名集群中的索引,然后导入悬挂索引。

5. 预防悬挂索引的产生

为了减少悬挂索引的产生,建议采取以下措施:

  • 避免频繁重启节点:尽量减少节点的频繁重启,避免因节点离线导致索引分片变成悬挂状态。

  • 合理设置cluster.indices.tombstones.size:根据集群的实际情况,合理设置cluster.indices.tombstones.size的值,避免因删除索引数量超过限制而产生悬挂索引。

  • 定期备份和恢复测试:定期进行备份和恢复测试,确保备份数据的完整性和一致性。

通过合理管理和预防悬挂索引的产生,可以有效提高Elasticsearch集群的稳定性和数据安全性。


http://www.ppmy.cn/server/164320.html

相关文章

build报错:Your build is currently configured to use incompatible Java 21.0.3 and Gradle 5.4.1Cannot...

报错显示 报错如图。 报错原因 JDK和gradle版本不一致。 成功解决方案 将jdk版本改为1.8&#xff0c;问题解决。 尝试过未成功的方案 升级gradle版本&#xff0c;升级后报错如下。

二、CSS笔记

(一)css概述 1、定义 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。 2、要点 怎么找到标签怎么操作标签对象(element) 3、css的四种引入方式 3.1 行内式 在标签的style属性中设定CSS样式。这种方…

图书管理系统 Axios 源码 __删除图书功能

目录 代码实现&#xff08;index.js&#xff09; 代码解析 使用方法 下面是完整的删除图书功能代码&#xff0c;基于 HTML Bootstrap JavaScript Axios 开发。 代码实现&#xff08;index.js&#xff09; // 删除图书功能 document.querySelector(.list).addEventListen…

【机器学习】自定义数据集,使用scikit-learn 中K均值包 进行聚类

一、K 均值算法简介 K 均值算法的目标是将数据集划分为 K 个簇&#xff0c;使得每个数据点属于离它最近的簇中心&#xff08;centroid&#xff09;所代表的簇。 K均值聚类算法步骤 ① 初始化&#xff1a; 随机选择原始数据的K个数据点作为初始质心&#xff08;聚类中心&…

利用Muduo库实现简单且健壮的Echo服务器

一、muduo网络库主要提供了两个类&#xff1a; TcpServer&#xff1a;用于编写服务器程序 TcpClient&#xff1a;用于编写客户端程序 二、三个重要的链接库&#xff1a; libmuduo_net、libmuduo_base、libpthread 三、muduo库底层就是epoll线程池&#xff0c;其好处是…

LabVIEW透镜多参数自动检测系统

在现代制造业中&#xff0c;提升产品质量检测的自动化水平是提高生产效率和准确性的关键。本文介绍了一个基于LabVIEW的透镜多参数自动检测系统&#xff0c;该系统能够在单一工位上完成透镜的多项质量参数检测&#xff0c;并实现透镜的自动搬运与分选&#xff0c;极大地提升了检…

【Vite + Vue + Ts 项目三个 tsconfig 文件】

Vite Vue Ts 项目三个 tsconfig 文件 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件&#xff1f;首先我们先了解什么是 tsconfig.json ? 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件&#xff1f; 在使用 Vite 创建 vue-ts 模板的项目时&#xff0c;会发现除了 ts…

GO语言 链表(单向链表

链表的前提 GO语言的链表类似于C语言的链表&#xff0c;它通过结构体和结构体指针实现。 结构体 GO语言定义结构体如下 type user struct {name stringage intnext *user } 结构体指针 结构体指针就是指向结构体的指针&#xff0c;我们在链表中会用到结构体指针实现链…