Elasticsearch跨集群快照恢复如何用单个rename_pattern重命名系统索引
解决方案
Elasticsearch的rename_pattern参数原生支持Java正则表达式,你可以通过正则分组匹配多类指定前缀的系统索引,仅用单个配置即可覆盖你的需求。
配置规则说明
- 匹配规则:
^\\.(security|ilm|slm|transform)(.*)$
正则逻辑拆解:^匹配索引名的起始位置\\.匹配系统索引统一的开头点符号(JSON字符串中反斜杠需要双重转义)(security|ilm|slm|transform)为第一个捕获组,用|实现或逻辑,匹配你需要处理的四类索引前缀(.*)为第二个捕获组,匹配前缀之后的所有剩余索引名字符$匹配索引名的结束位置
- 重命名规则:你可以沿用之前的
delete_$1$2格式,恢复后可直接批量删除所有delete_开头的索引避免占用空间;如果需要保留这些索引,也可以改成自定义前缀比如restored_$1$2和集群原有索引做区分。
完整恢复请求示例
curl -X POST -u elastic:321 "192.168.2.15:9200/snapshot/snapshot_repository/snapshot-1/_restore?pretty" -H 'Content-Type: application/json' -d' { "indices": "*", "ignore_unavailable": true, "include_global_state": false, "rename_pattern": "^\\.(security|ilm|slm|transform)(.*)$", "rename_replacement": "delete_$1$2", "include_aliases": false } '
补充说明
如果你本身不需要恢复这些系统内置索引,也可以直接在indices参数中排除这类索引,写法为"indices": "*,-.security*,-.ilm*,-.slm*,-.transform*",无需额外配置重命名规则,恢复流程会直接跳过这些索引。
内容的提问来源于stack exchange,提问作者noze_potato
相关产品推荐
相关产品推荐

