配置Elasticsearch集群索引回收站
Elasticsearch集群在执行删除索引的操作时,会直接将索引删除,没有回收站的能力。为了防止客户误操作导致数据被删除,CSS提供了索引回收站功能,支持将删除的索引存放到回收站中,且支持从回收站中还原索引,进而提升集群的数据可靠性。
约束限制
- 仅Elasticsearch 7.10.2集群支持索引回收站功能。
- 当开启回收站之后,使用DELETE API将索引放入回收站时,集群的状态可能会出现短暂的RED,这是由于索引存放至回收站时会将索引CLOSE,在Elasticsearch中CLOSE索引时会出现短暂的RED状态。
- 当使用还原API从回收站中还原索引时,集群的状态可能会出现短暂的RED,这是由于还原索引时需要重新OPEN索引,在Elasticsearch中OPEN索引时会重新初始化分片,导致短暂的RED状态。
- 存放在回收站中的索引仍然是集群元数据的一部分,因此集群无法新建和回收站中的同名的索引。
开启索引回收站
执行如下命令,启用索引回收站功能。
PUT _cluster/settings { "persistent": { "index.trash.enabled": true } }
配置项 |
说明 |
---|---|
“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
参数名称 |
说明 |
---|---|
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
执行该命令后,将彻底删除回收站中的索引数据,不可恢复,请谨慎操作。