配置OpenSearch集群索引回收站
OpenSearch集群在执行删除索引操作时,默认会直接删除索引数据,缺乏数据恢复机制。为防止误操作导致数据丢失,CSS服务提供索引回收站功能,支持将删除的索引暂存至回收站,并提供还原和彻底删除操作,提升数据可靠性与操作安全性。
原理介绍
索引回收站通过以下机制实现:
- 数据回收机制:删除索引时,系统将其移动至回收站,保留指定时长后自动清理。回收站中的索引仍属于集群元数据,支持通过API还原。
- 状态管理
- 使用DELETE API删除索引时,索引会被关闭(Close),导致集群状态短暂变为Red。
- 当使用还原API还原索引时,系统会重新打开(Open)索引并初始化分片,同样可能导致集群状态短暂变为Red。
约束限制
- OpenSearch集群仅2.19.0版本支持索引回收站功能。
- 存放在回收站中的索引仍然是集群元数据的一部分,因此集群无法新建和回收站中的同名的索引。
登录OpenSearch Dashboards
登录OpenSearch Dashboards进入命令执行页面。OpenSearch集群支持多种客户端访问,本文仅以CSS服务集成的OpenSearch Dashboards为例介绍配置指导。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,选择目标集群,单击操作列的“Dashboards”,登录OpenSearch Dashboards。
- 在OpenSearch Dashboards左侧导航栏选择“Dev Tools”,进入操作页面。
开启索引回收站
执行如下命令,启用索引回收站功能。
PUT _cluster/settings { "persistent": { "index.trash.enabled": true } }
参数 |
参数类型 |
描述 |
---|---|---|
index.trash.enabled |
Boolean |
索引回收站开关,控制是否启用索引回收站功能。启用后,删除索引操作会将索引移动至回收站,需再次删除才能彻底清除数据。
|
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
参数名称 |
说明 |
---|---|
v |
当返回值格式是表格形式时,设置是否显示表头。
缺省值是“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
列名 |
说明 |
---|---|
index |
索引名称。 |
uuid |
索引的uuid。 |
pri |
索引的分片数。 |
rep |
索引的副本数。 |
trash.ts |
索引存放至回收站的时间。 |
delete.time |
索引在回收站中剩余存放时长,当变成0时,回收站中的索引将被彻底删除。 |
从回收站中还原索引
执行如下命令,从回收站中还原索引。
POST /trash/recover/{INDEX_NAME}
其中“INDEX_NAME”为需要还原的索引名称,支持通配符。
清空回收站
执行如下命令,清空回收站。
POST trash/empty
执行该命令后,将彻底删除回收站中的索引数据,不可恢复,请谨慎操作。