更新时间:2026-01-28 GMT+08:00
分享

配置OpenSearch集群索引回收站

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

功能介绍

图1 索引回收站架构图

索引回收站功能用于防止误删索引导致的数据丢失。如图1所示,开启索引回收站功能后:

  • 当执行删除索引操作时,目标索引将被关闭(Close),此过程可能导致集群状态短暂变为Red(表示存在未分配的分片,但不影响服务可用性),关闭后的索引将被移至索引回收站中。
  • 当索引回收站中的索引达到预设的保留时长后,集群将自动删除该索引及其数据,此时删除的数据将不可恢复。或者,用户可以直接对索引回收站中的索引执行删除操作,即可立即永久删除该索引及其数据。
  • 当需要恢复误删的索引数据时,可执行还原索引操作,此操作将打开目标索引(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”,进入操作页面。

    控制台左侧是命令输入框,其右侧的三角形图标为执行按钮,右侧区域则显示执行结果。

开启索引回收站

  1. 执行如下命令,启用索引回收站功能,以防止误删除索引导致的数据丢失。
    PUT _cluster/settings
    {
      "persistent": {
        "index.trash.enabled": true
      }
    }
    表1 开启索引回收站的参数说明

    参数

    类型

    默认值

    说明

    index.trash.enabled

    Boolean

    false

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

    取值范围:

    • true:开启索引回收站功能。
    • false:关闭索引回收站功能。

    indices.trash.keep.time

    String

    1d

    索引在回收站中的保留时长。系统会通过定时清理任务删除超过保留时长的索引。

    取值格式:数字+单位

    • 数字:自然数
    • 单位:nanos(纳秒)、micros(微秒)、ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)

    最小值:1d

    indices.trash.clean.interval

    String

    5m

    回收站清理周期。系统会按照预设周期执行清理任务,自动删除超过保留时长的索引。

    取值格式:数字+单位

    • 数字:自然数
    • 单位:nanos(纳秒)、micros(微秒)、ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)

    最小值:5m

  2. 如需立即清除索引回收站中的指定索引,则需执行如下命令,否则索引会在达到回收站中的保留时长后才被自动删除。
    DELETE {index_name}
    表2 参数说明

    参数

    类型

    默认值

    说明

    index_name

    String

    指定索引名称。

    • 单个索引:直接输入索引名称(如“my_index”)。
    • 多个索引:用英文逗号分隔多个索引(如“my_index1,my_index2”)。
    • 通配符:支持通配符 *(匹配任意字符),如“myindex*”表示匹配所有以myindex开头的索引。

查看回收站中的索引

执行如下命令,查看索引回收站中的索引,以确认索引是否已被放入回收站及其状态。

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

参数

类型

默认值

说明

v

Boolean

false

用于控制返回值中表格是否显示表头。

取值范围:

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

s

String

用于指定索引的排序字段。

取值范围:

  • index:按索引名称排序。
  • uuid:按索引ID排序。
  • pri:按索引的主分片数量排序。
  • rep:按索引的副本分片数量排序。
  • trash.ts:按索引被放入回收站的时间戳进行排序。
  • delete.time:按索引在回收站中剩余存放时长进行排序。

format

String

无(表格形式)

用于设置返回值的呈现格式。

取值范围:json(文本格式)、yaml(文本格式)、cbor(二进制格式)、smile(二进制格式)

如果参数值为以上4种之外的值,则以表格形式展示。

h

String

无(全部显示)

用于设置返回值中表格需要显示的列名。

当只需要显示部分列名时,可以通过逗号隔开列名,如“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

当delete.time变成0时,该索引将被彻底删除。

从回收站中还原索引

  1. 执行如下命令,从回收站中还原索引,以恢复误删除的索引数据。
    POST /trash/recover/{index_name}
  2. 执行如下命令,查询索引列表确认索引是否已成功还原。
    GET _cat/indices?v=true

清空回收站

清空回收站前,请确认已备份重要数据,防止误删数据不可恢复。

  1. 执行如下命令,彻底删除回收站中的索引数据,确保数据清理。
    POST trash/empty
  2. 执行如下命令,查看索引回收站中的索引,确认索引回收站中的索引已清空。
    GET _cat/trash?v=true&s=index

相关文档