更新时间:2025-09-05 GMT+08:00

配置OpenSearch集群索引回收站

OpenSearch集群在执行删除索引操作时,默认会直接删除索引数据,缺乏数据恢复机制。为防止误操作导致数据丢失,CSS服务提供索引回收站功能,支持将删除的索引暂存至回收站,并提供还原和彻底删除操作,提升数据可靠性与操作安全性。

原理介绍

索引回收站通过以下机制实现:

  • 数据回收机制:删除索引时,系统将其移动至回收站,保留指定时长后自动清理。回收站中的索引仍属于集群元数据,支持通过API还原。
  • 状态管理
    • 使用DELETE API删除索引时,索引会被关闭(Close),导致集群状态短暂变为Red。
    • 当使用还原API还原索引时,系统会重新打开(Open)索引并初始化分片,同样可能导致集群状态短暂变为Red。

约束限制

  • OpenSearch集群仅2.19.0版本支持索引回收站功能。
  • 存放在回收站中的索引仍然是集群元数据的一部分,因此集群无法新建和回收站中的同名的索引。

登录OpenSearch Dashboards

登录OpenSearch Dashboards进入命令执行页面。OpenSearch集群支持多种客户端访问,本文仅以CSS服务集成的OpenSearch Dashboards为例介绍配置指导。

  1. 登录云搜索服务管理控制台
  2. 在左侧导航栏,选择“集群管理 > OpenSearch”
  3. 在集群列表,选择目标集群,单击操作列的“Dashboards”,登录OpenSearch Dashboards。
  4. 在OpenSearch Dashboards左侧导航栏选择“Dev Tools”,进入操作页面。

开启索引回收站

执行如下命令,启用索引回收站功能。

PUT _cluster/settings
{
  "persistent": {
    "index.trash.enabled": true
  }
}
表1 开启索引回收站的参数说明

参数

参数类型

描述

index.trash.enabled

Boolean

索引回收站开关,控制是否启用索引回收站功能。启用后,删除索引操作会将索引移动至回收站,需再次删除才能彻底清除数据。

  • true:开启索引回收站功能。
  • false(默认值):关闭索引回收站功能。

indices.trash.keep.time

String

索引在回收站中的保留时长。系统会在达到保留时长后自动删除回收站中的索引。

支持时间格式如“1d”(1天)、“7d”(7天)、“1w”(1周)、“1h”(1小时)等,最小值为“1d”

默认值为“1d”

执行如下命令,删除索引。
DELETE {INDEX_NAME}

其中“INDEX_NAME”为需要删除的索引名称,支持通配符。

查看回收站中的索引

执行如下命令,查看索引回收站中的索引。

GET _cat/trash?v=true&s=index
表2 参数说明

参数名称

说明

v

当返回值格式是表格形式时,设置是否显示表头。

  • true:显示表头。
  • false:不显示表头。

缺省值是“false”

s

指定索引的排序字段。可选值为“index”“uuid”“pri”“rep”“trash.ts”“delete.time”

format

设置返回值的呈现格式,默认为表格形式,支持json、yaml、cobr、smile,其中cobr和smile为二进制格式。

h

设置需要显示的列名,默认全部显示,当只需要显示部分列名时,可以通过逗号隔开列名,例如“h=index,uuid,delete.time”

返回值如下所示,此处是示例,仅供参考,请以实际返回值为准。

index    uuid                   pri rep      trash.ts delete.time
index1   CMD3FCLzTOyTg4RUekWNNA   1   1 1714465116615       23.6h
index1   6ATijuu6SfqamVI-WMyOKg   1   1 1714466233898       23.9h
表3 返回值的参数说明

列名

说明

index

索引名称。

uuid

索引的uuid。

pri

索引的分片数。

rep

索引的副本数。

trash.ts

索引存放至回收站的时间。

delete.time

索引在回收站中剩余存放时长,当变成0时,回收站中的索引将被彻底删除。

从回收站中还原索引

执行如下命令,从回收站中还原索引。

POST /trash/recover/{INDEX_NAME}

其中“INDEX_NAME”为需要还原的索引名称,支持通配符。

清空回收站

执行如下命令,清空回收站。

POST trash/empty

执行该命令后,将彻底删除回收站中的索引数据,不可恢复,请谨慎操作。