Search code examples
amazon-web-serviceselasticsearchamazon-elasticsearch

Elasticsearch 6.3 (AWS) snapshot restore progress ERROR: "/_recovery is not allowed"


  • I take manual snapshots of an Elasticsearch index

  • These are stored in a snapshot repo on S3

  • I have created a new ES cluster, also version 6.3

  • I have connected the new cluster to the S3 snapshot repo via python script method mentioned in this blog post: https://medium.com/docsapp-product-and-technology/aws-elasticsearch-manual-snapshot-and-restore-on-aws-s3-7e9783cdaecb

  • I have confirmed that the new cluster has access to the snapshot repo via the GET /_snapshot/manual-snapshot-repo/_all?pretty command

  • I have initiated a snapshot restore to this new cluster via:

    POST /_snapshot/manual-snapshot-repo/snapshot_name/_restore { "indices": "reports", "ignore_unavailable": false, "include_global_state": false }

  • It is clear that this operation has at least partially succeeded as the cluster status has gone from "green" to "yellow" and a GET request to /_cluster/health yields information that suggests actions are occuring on an otherwise empty cluster... not to mention storage is starting to be utilized (when viewing cluster health on AWS).

  • I would very much like to monitor the progress of the restore operation.

  • Elasticsearch docs suggest to use the Recovery API. Docs Link: https://www.elastic.co/guide/en/elasticsearch/reference/6.3/indices-recovery.html

  • It is clear from the docs that GET /_recovery?human or GET /my_index/_recovery?human should yield restore progress.

However, I encounter the following error:

"Message": "Your request: '/_recovery' is not allowed."

I get the same message when attempting the GET command in the following ways:

  • Via Kibana dev tools
  • Via chrome address bar (It's just a GET operation after all)
  • Via Advanced REST Client (a Chrome app)

I have not been able to locate any other mention of this particular error message.

How can I utilize the GET /_recovery?human command on my ElasticSearch 6.3 clusters?

Thank you!


Solution

  • The Amazon managed Elasticsearch does not have all the endpoints available.

    For version 6.3 you can check this link for the endpoints available, and _recovery is not on the list, that is why you get that message.

    Without the _recovery endpoint you will need to rely on _cluster/health.