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

Elasticsearch: get current running snapshot operation

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

我尝试将线程池 api 与 运行 快照操作一起使用:
curl -XGET 'http://127.0.0.1:9200/_cat/thread_pool?h=snapshot.active 但是,它 returns 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

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

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

init: Recovery has not started

index: Reading index meta-data and copying bytes from source to destination

start: Starting the engine;

opening the index for use translog: Replaying transaction log

finalize: Cleanup done: Complete

done: Complete

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