Elasticsearch:获取当前正在运行的快照操作

时间:2016-08-10 11:07:10

标签: elasticsearch ansible-playbook elasticsearch-2.0

假设需要自动将2个或更多快照的快照恢复到弹性集群 有必要检测快照操作是否在下一次api调用之前完成:_snaphot/<repository>/<snapshot>/_restore 如果我在快照恢复时呼叫,则群集响应503。

我尝试使用线程池api来运行快照操作:
curl -XGET 'http://127.0.0.1:9200/_cat/thread_pool?h=snapshot.active 但是,无论如何它都会返回0.

获取有关当前正在运行的还原操作的信息的正确方法是什么?

更新: 它是如何设法与ansible一起使用的一个例子:

- name: shell | restore latest snapshot
  uri:
    url: "http://127.0.0.1:9200/_snapshot/{{ es_snapshot_repository }}/snapshot_name/_restore"
    method: "POST"
    body: '{"index_settings":{"index.number_of_replicas": 0}}'
    body_format: json

- name: shell | get state of active recovering operations | log indices
  uri:
    url: "http://127.0.0.1:9200/_recovery?active_only"
    method: "GET"
  register: response
  until: "response.json == {}"
  retries: 6
  delay: 10

1 个答案:

答案 0 :(得分:1)

您可以使用Indices Recovery API监控正在恢复的索引的状态。

最简单的方法是查看stage属性:

  

init:恢复尚未开始

     

index:读取索引元数据并将字节从源复制到目标

     

start:启动引擎;

     

opening使用translog的索引:重播事务日志

     

finalize:已完成清理:完成

     

done:完成

参数active_only返回有关不在done状态的分片的信息:
http://127.0.0.1:9200/_recovery?active_only