大家好,我的 Elasticsearch 有 100 个索引,我想通过一个查询删除它们。它们都以 myindex 开头:
myindex-1
myindex-2
myindex-3
myindex-4
.
.
.
myindex-100
当我尝试此查询时,它不起作用:
curl -XDELETE http://localhost:9200/myindex*
我得到:
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Wildcard expressions or all indices are not allowed"}],"type":"illegal_argument_exception","reason":"Wildcard expressions or all indices are not allowed"},"status":400}
你有什么想法吗?
您可以在 kibana 开发工具中使用以下内容:
PUT /_cluster/settings
{
"transient": {
"action.destructive_requires_name":false
}
}
Elasticsearch 文档 说:
删除索引 API 还可以应用于多个索引,方法是使用逗号分隔列表,或使用 _all 或 * 作为索引应用于所有索引(小心!)。
为了禁止通过通配符或 _all 删除索引,请将配置中的
设置设置为 true。也可以通过集群更新设置 api 更改此设置。action.destructive_requires_name
因此,如果您有预定义数量的要删除的索引,这可能会起作用:
curl -XDELETE http://localhost:9200/myindex-1,myindex-2,myindex-3,myindex-4
如果您想使用通配符,您必须如上所述更新配置