使用Elasticsearch,我可以按名称删除索引:
DELETE my_index
{}
但我不能删除它的别名:
DELETE my_index_alias
{}
错误为:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "The provided expression [my_index_alias] matches an alias, specify the corresponding concrete indices instead."
}
],
"type": "illegal_argument_exception",
"reason": "The provided expression [my_index_alias] matches an alias, specify the corresponding concrete indices instead."
},
"status": 400
}
有没有办法按别名删除索引?
3条答案
按热度按时间0s0u357o1#
我相信你想实现的事情是不可能的。目前,ElasticSearch DELETE API支持以下功能:
1.您可以删除索引
curl -XDELETE 'http://localhost:9200/{indexname}'
当且仅当{indexname}是具体索引时删除{indexname}。
或2.改为删除别名
curl -XDELETE 'http://localhost:9200/_alias/{aliasname}'
当且仅当{aliasname}是索引别名时删除{aliasname}。
gab6jxml2#
虽然您无法依别名来删除索引,但您可以改为向Resolve Index API提出要求,以给予别名的名称。它会传回与该别名相关的所有索引,让您可以循环检视并删除它们。
您也可以为它指定索引的名称,它将返回它的任何别名。
oxalkeyp3#
您提到的错误指出,您使用语法
DELETE whatever_you_put_here
删除的内容实际上是一个语法或查询 *,用于删除索引 *,并建议用户,如果他们希望删除indexes
,则不能通过删除别名来完成。例如,当您创建一个别名
myalias
,并将样本索引myindex
与之关联时,在删除索引myindex
时,别名myalias
也会被删除。但是,当您创建一个别名并将两个索引 * 与之 * 关联时,您需要 * 删除这两个索引 * 才能删除别名。
Elasticsearch
中不存在空的alias
,您无法创建它。请注意,您可以通过执行以下查询来检查别名列表
现在,如果您只想删除
index
的alias
,可以使用下面的DELETE
查询删除它。请注意,如果有两个索引引用同一别名,则该别名将继续存在,直到您对这两个索引执行上述
DELETE
操作。是否有一种方法可以使用索引的别名来删除索引
至于上面的查询,我认为是不可能的,也说不通。