You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch快照恢复与内部系统索引冲突问题咨询

问题解答

1. 如何列出所有内部系统索引

默认GET /_cat/indices不会显示以.开头的隐藏系统索引,执行以下命令可列出所有索引(包括系统索引和未加载索引):

GET /_cat/indices?v&include_unloaded_indices=true&expand_wildcards=all

若仅需查看系统索引,可直接匹配所有以.开头的索引:

GET /_cat/indices/.*/v

2. 创建快照时是否需要忽略系统索引

默认Elasticsearch快照会包含集群内所有索引(包括系统索引)。若无需备份系统索引,创建快照时可通过indices参数排除它们,示例如下:
执行创建快照的命令:

PUT /_snapshot/my_backup/%3Cmy_snapshot_%7Bnow%2Fd%7D%3E

同时携带请求体:

{
  "indices": "*,-.*"
}

其中*匹配所有普通索引,-.*排除所有以.开头的系统索引。若需精准排除特定系统索引(如仅排除ILM历史索引),可写成:

{
  "indices": "*,-.ds-ilm-history-*"
}

若已创建包含系统索引的快照,恢复时也可指定仅恢复普通索引避免冲突:

POST /_snapshot/my_backup/my_snapshot_2023.06.30/_restore

携带请求体:

{
  "indices": "*,-.*"
}

3. 是否可以删除所有内部及外部索引

可以,但Elasticsearch默认禁止使用_all或通配符批量删除所有索引,测试环境下可按以下两种方式操作:

方式1:批量指定索引删除

  1. 先列出所有索引(包括系统索引):
GET /_cat/indices?expand_wildcards=all&h=index
  1. 将返回的所有索引名用逗号分隔,执行删除命令:
DELETE /_index/index1,index2,.ds-ilm-history-5-2023.02.17-000001,...

方式2:修改配置启用通配符删除

  1. 修改Elasticsearch配置文件elasticsearch.yml,添加或修改:
action.destructive_requires_name: false
  1. 重启Elasticsearch服务
  2. 执行命令删除所有索引:
DELETE /*

注意:此方式生产环境风险极高,但你有虚拟机备份,测试环境可放心操作。部分核心系统索引(如.security)删除后可能导致集群功能异常,出现问题直接恢复虚拟机备份即可。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:56:58