
# 开启索引回收站
OpenSearch集群在执行删除索引操作时，默认会直接删除索引数据，缺乏数据恢复机制。为防止误操作导致数据丢失，CSS服务提供索引回收站功能，支持将删除的索引暂存至回收站，并提供还原和彻底删除操作，提升数据可靠性与操作安全性。
#### 功能介绍
图1索引回收站架构图   
![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002542381035.png "点击放大")
索引回收站功能用于防止误删索引导致的数据丢失。如[图1]所示，开启索引回收站功能后：
- 当执行删除索引操作时，目标索引将被关闭（Close），此过程可能导致集群状态短暂变为Red（表示存在未分配的分片，但不影响服务可用性），关闭后的索引将被移至索引回收站中。
- 当索引回收站中的索引达到预设的保留时长后，集群将自动删除该索引及其数据，此时删除的数据将不可恢复。或者，用户可以直接对索引回收站中的索引执行删除操作，即可立即永久删除该索引及其数据。
- 当需要恢复误删的索引数据时，可执行还原索引操作，此操作将打开目标索引（Open）并初始化分片，此过程同样可能导致集群状态短暂变为Red。
 
#### 约束限制
- 仅当OpenSearch集群版本号为2.19.0或3.4.0（镜像版本不低于3.4.0_26.6.0_xxx）时，才支持索引回收站功能。

- 回收站内的索引仍属于集群元数据，因此集群无法新建与回收站内索引同名的索引。
 
#### 登录OpenSearch Dashboards
登录OpenSearch Dashboards进入命令执行页面。OpenSearch集群支持多种客户端访问，本文仅以CSS服务集成的OpenSearch Dashboards为例介绍配置指导。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
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
```
![](https://support.huaweicloud.com/usermanual-css/public_sys-resources/note_3.0-zh-cn.png)
当delete.time变成0时，该索引将被彻底删除。
#### 从回收站中还原索引
1. 执行如下命令，从回收站中还原索引，以恢复误删除的索引数据。
   ```
   POST /trash/recover/{index_name}
   ```
   
2. 执行如下命令，查询索引列表确认索引是否已成功还原。
   ```
   GET _cat/indices?v=true
   ```
   
 
#### 清空回收站
![](https://support.huaweicloud.com/usermanual-css/public_sys-resources/warning_3.0-zh-cn.png)
清空回收站前，请确认已备份重要数据，防止误删数据不可恢复。
1. 执行如下命令，彻底删除回收站中的索引数据，确保数据清理。
   ```
   POST trash/empty
   ```
   
2. 执行如下命令，查看索引回收站中的索引，确认索引回收站中的索引已清空。
   ```
   GET _cat/trash?v=true&s=index
   ```
   
 
