我想从一个快照中恢复所有索引,该快照具有要恢复为abc_yyy_indexName的模式abc_xxx_indexName。我试图通过ES的官方文档,但它只有一个更改索引名称的示例
POST _snapshot/my_repository/my_snapshot_2099.05.06/_restore
{
"indices": "my-index,logs-my_app-default",
"rename_pattern": "(.+)",
"rename_replacement": "restored-$1"
}
字符串
如果您将logs-my_app-default数据流重命名为restored-logs-my_app-default,
但在我的情况下,这是没有用的,有人尝试过用正则表达式或脚本做这件事吗?
2条答案
按热度按时间p8h8hvxi1#
因此,这部分的工作方式是“rename_pattern”尝试匹配整个索引名称,如果匹配,则使用java regex规则将索引名称替换为替换。因此,要实现子字符串替换,您首先需要编写一个规则,该规则将匹配您的索引名称并捕获更改的部分。因此,假设在您的示例
abc_xxx_indexName
中,indexName
是可变部分,其余部分是静态的,则您的abc_xxx_(.*?)
将是abc_xxx_(.*?)
,因此这里我们匹配abc_xxx_
并捕获indexName
,因此在替换部分中,我们可以引用捕获的indexName
为$1
。如果我们将这些合并组合在一起,我们将得到:字符串
此命令将执行恢复
def_xxx_index0
作为def_xxx_index0
,因为它与模式不匹配abc_xxx_index1
作为abc_yyy_index1
abc_xxx_index2
作为abc_yyy_index2
在未来,请尝试使您的例子更加一致,他们都在你的地方
abc_xxx_indexName
在文本中是非常不同的logs-my_app-default
,这是很难理解你实际上想要实现.你有-
或_
和你有多少部分,等等.lqfhib0f2#
如果我理解正确的话,
abc_xxx
是一个静态前缀。所以你可以试试这个:字符串