更新时间:2024-07-01 GMT+08:00

索引回收站

Elasticsearch集群在执行删除索引的操作时,会直接将索引删除,没有回收站的能力。为了防止客户误操作导致数据被删除,CSS提供了索引回收站功能,支持将删除的索引存放到回收站中,且支持从回收站中还原索引,进而提升集群的数据可靠性。

约束限制

  • 目前仅7.10.2版本的Elasticsearch集群支持索引回收站功能。
  • 当开启回收站之后,使用DELETE API将索引放入回收站时,集群的状态可能会出现短暂的RED,这是由于索引存放至回收站时会将索引CLOSE,在Elasticsearch中CLOSE索引时会出现短暂的RED状态。
  • 当使用还原API从回收站中还原索引时,集群的状态可能会出现短暂的RED,这是由于还原索引时需要重新OPEN索引,在Elasticsearch中OPEN索引时会重新初始化分片,导致短暂的RED状态。
  • 存放在回收站中的索引仍然是集群元数据的一部分,因此集群无法新建和回收站中的同名的索引。

开启索引回收站

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

PUT _cluster/settings
{
  "persistent": {
    "index.trash.enabled": true
  }
}
表1 配置项说明

配置项

说明

“index.trash.enabled”

索引回收站开关,缺省值是“false”,表示不启用索引回收站功能,集群与开源Elasticsearch集群的能力兼容。当设置成“true”时,表示开启索引回收站功能,执行删除索引的操作后,索引将被存放至回收站中,需要再次执行删除索引的操作才能彻底删除索引数据。

“indices.trash.keep.time”

索引在回收站中的存放时长,缺省值是“1d”,表示索引在回收站中存放1天后将被系统彻底删除。最小值为“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

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