我正在尝试做一些相当简单的事情——我有一个可能与一个或多个索引相关联的别名,我想删除所有关联并添加一个。这是我正在做的一个例子(如这里所建议的):
POST _aliases
{
"actions": [
{
"remove": {
"index": "*", // or "index": "_all"
"alias": "my_index"
}
},
{
"add": {
"index": "my_index_2023_01_05_17_18_29",
"alias": "my_index"
}
}
]
}
我使用的是管理员用户,由于某种原因,我收到以下错误消息:
{
"error" : {
"root_cause" : [
{
"type" : "security_exception",
"reason" : "no permissions for [] and User [name=admin, backend_roles=[], requestedTenant=]"
}
],
"type" : "security_exception",
"reason" : "no permissions for [] and User [name=admin, backend_roles=[], requestedTenant=]"
},
"status" : 403
}
有点奇怪的消息-它没有指定失败的操作是什么(没有[]
的权限),所以我无法找出我缺少哪些权限……
无论哪种方式,如果不使用通配符("index": "*"
),我做一些类似"index"的事情:"my_index*"
它起作用-它不完全是我想要的,但它执行。
知道为什么会发生这种情况吗?我该如何解决这个问题?
谢谢!
(使用OpenSearch 2.3)
当您将index_pattern指定为"*"时,系统索引也包括在内。即使使用管理员用户,默认情况下也不能更改系统索引的设置。您可以使用“index_name”*或“2022”等参数而不是“*”来删除别名。例如:
POST _aliases
{
"actions": [
{
"remove": {
"index": "index_name*",
"alias": "my_index"
}
}
]
}
编辑:您可以使用以下API删除所有没有系统索引的别名。
DELETE *,.-*/_alias/my-alias
您可以在删除它们之前检查API是否正确
GET *,-.*/_alias/my-alias
参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-alias.html
注意:不幸的是,在POST_aliases
中无法使用像*,.-*
这样的表达式_aliases