📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

action.destructive_requires_name 配置项控制执行破坏性索引操作(如删除索引、关闭索引等)时,是否必须明确指定索引名称,禁止使用通配符(*)或 _all 等模糊匹配方式。

该配置项的目的是防止因误操作导致大量索引被意外删除或关闭,提高集群的安全性。

配置项类型 #

该配置项为动态配置,可以在运行时通过集群更新 API 进行修改,无需重启节点。

默认值 #

false

是否必需 #

可选配置项

配置值说明 #

说明
true执行破坏性操作时必须明确指定索引名称,禁止使用通配符或 _all
false允许使用通配符或 _all 执行破坏性操作(默认)

影响的操作 #

此配置项影响以下破坏性操作:

  • 删除索引DeleteIndexAction
  • 关闭索引CloseIndexAction
  • 其他可能影响多个索引的破坏性操作

使用示例 #

# 启用安全模式,禁止通配符删除
action.destructive_requires_name: true

# 允许通配符删除(默认)
action.destructive_requires_name: false

行为说明 #

当设置为 true 时: #

允许的操作示例:

# 删除单个指定索引(允许)
DELETE /my-index

# 删除多个明确指定的索引(允许)
DELETE /index1,index2,index3

禁止的操作示例:

# 使用通配符(禁止)
DELETE /my-index-*

# 删除所有索引(禁止)
DELETE /_all

# 使用前缀通配符(禁止)
DELETE /*-logs

上述禁止操作将返回错误:

IllegalArgumentException: Wildcard expressions or all indices are not allowed

推荐设置建议 #

生产环境强烈建议设置为 true

理由:

  1. 防止误操作:避免因 DELETE /*DELETE /_all 等命令导致生产数据全部丢失
  2. 提高操作安全性:强制运维人员明确指定要操作的索引名称,减少人为失误
  3. 审计友好:操作日志中会明确记录被操作的索引名称,便于审计追踪

示例配置:

action.destructive_requires_name: true

开发/测试环境 #

可以考虑保持默认值 false,方便快速清理测试数据。但建议在脚本中使用明确的索引名称而非通配符,培养良好的操作习惯。

注意事项 #

  1. 动态更新:修改此配置后立即生效,影响所有新执行的破坏性操作
  2. 不影响的操作:此配置仅影响破坏性操作,不影响查询、索引更新等非破坏性操作
  3. API 兼容性:某些管理工具或脚本可能依赖通配符删除功能,启用前请检查
  4. 配合其他安全措施:建议与索引别名、快照备份等机制配合使用,构建完整的数据保护策略