说明
之前写过一篇文章,文中着重说明使用 curator工具
对索引备份进行的操作,但是对索引的其他操作比如恢复讲解过少。
本文着重讲解索引的其他操作,如恢复,关闭和删除等。
ES基本查询操作
以下操作均是在 Kibana Dev
开发工具上进行,如下:
# 获取所有索引
GET /_cat/indices?v
# 获取全部的快照仓库
GET /_snapshot/_all
# 或者
GET /_cat/repositories?v
# 获取指定名字的快照仓库,如test_20210801003002
GET /_snapshot/test_20210801003002
# 获取指定名字快照仓库的内容,如test_20210801003002
# 里面包含索引
GET /_snapshot/test_20210801003002/_all
索引关闭
需求:关闭当前 ES 中以 read_me
开头的索引。
具体操作步骤如下:
查看当前索引
# 获取所有索引
GET /_cat/indices?v
编辑 close yaml 文件
我这里新建一个 modules
文件用来放索引操作的 yaml 文件,如下:
# 创建目录
mkdir ./modules
# cat ./modules/action_close_indices.yml
actions:
1:
# 关闭以 read_me 为前缀的索引:
action: close
description: >-
Close the index prefixed with read_me
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
filters:
- filtertype: pattern
kind: regex
value: '^read_me'
exclude:
执行关闭索引操作
# curator工具
curator --config config.yml action_close_indices.yml --dry-run
# 动态查看log
tail -f action_close_indices.log
# 当 log 中没有报错且是我们需要关闭的索引时,执行:
curator --config config.yml action_close_indices.yml
删除索引
需求:将上面已关闭的以 read_me
开头的索引删除。
# cat ./modules/action_delete_indices.yml
actions:
1:
# 这里执行操作类型为删除索引
action: delete_indices
description: >-
Delete the index prefixed with read_me
options:
ignore_empty_list: True
filters:
- filtertype: pattern
kind: prefix
# 匹配"read_me"的索引
value: "^read_me"
执行删除索引操作
# curator工具
curator --config config.yml action_delete_indices.yml --dry-run
# 动态查看log
tail -f action_delete_indices.log
# 当 log 中没有报错且是我们需要删除的索引时,执行:
curator --config config.yml action_delete_indices.yml
索引恢复
需求:原先 ES 中有 test_en
,test_te
,test_po
三条索引,但是 test_po
索引被误删除。我们现在需要根据之前做的索引快照,对删除索引进行数据恢复。
具体操作步骤如下:
获取包含 test_po 索引最新快照仓库信息
# 获取快照仓库
GET /_cat/repositories?v
# 获取指定名字快照仓库的内容,如test_20210801003002
# 里面包含索引,test_en ,test_te ,test_po
GET /_snapshot/test_20210801003002/_all
编辑 restore yaml 文件
创建 action_restore.yml
文件:
# cat ./modules/action_restore.yml
actions:
1:
action: restore
description: >-
Restore all indices in the most recent snapshot with state SUCCESS. Wait
for the restore to complete before continuing. Do not skip the repository
filesystem access check. Use the other options to define the index/shard
settings for the restore.
options:
repository: test_20210801003002
# If name is blank, the most recent snapshot by age will be selected
name: test-20210725003004
# If indices is blank, all indices in the snapshot will be restored
# Specify one or more indexes for recovery, separated by commas
indices:
#indices: ['logstash-2021.09.02','logstash-2021.09.03','logstash-2021.09.04']
wait_for_completion: True
#max_wait: 3600
#wait_interval: 10
filters:
- filtertype: state
state: SUCCESS
exclude:
执行恢复操作
# curator工具
curator --config config.yml action_restore.yml --dry-run
# 动态查看log
tail -f action_restore.log
# 当 log 中没有报错且是我们需要恢复的索引时,执行:
curator --config config.yml action_restore.yml
我们发现 log 中报错,上面恢复操作执行失败,我们看到提示:test_en
,test_te
索引已经存在,所以恢复 test_po
失败。
同时给出了解决方案:要么删除已存在的索引,要么关闭已存在的索引。我们这里选择关闭存在的索引进行恢复。
索引的关闭,请参考上面的操作。再次执行恢复操作即可。