123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- [[indices-recovery]]
- === Index recovery API
- ++++
- <titleabbrev>Index recovery</titleabbrev>
- ++++
- Returns information about ongoing and completed shard recoveries for one or more
- indices. For data streams, the API returns information for the stream's backing
- indices.
- [source,console]
- ----
- GET /my-index-000001/_recovery
- ----
- // TEST[setup:my_index]
- [[index-recovery-api-request]]
- ==== {api-request-title}
- `GET /<target>/_recovery`
- `GET /_recovery`
- [[index-recovery-api-desc]]
- ==== {api-description-title}
- Use the index recovery API
- to get information about ongoing and completed shard recoveries.
- // tag::shard-recovery-desc[]
- Shard recovery is the process
- of syncing a replica shard from a primary shard.
- Upon completion,
- the replica shard is available for search.
- include::{es-repo-dir}/glossary.asciidoc[tag=recovery-triggers]
- // end::shard-recovery-desc[]
- [[index-recovery-api-path-params]]
- ==== {api-path-parms-title}
- `<target>`::
- (Optional, string)
- Comma-separated list of data streams, indices, and index aliases used to limit
- the request. Wildcard expressions (`*`) are supported.
- +
- To target all data streams and indices in a cluster, omit this parameter or use
- `_all` or `*`.
- [[index-recovery-api-query-params]]
- ==== {api-query-parms-title}
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=active-only]
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=detailed]
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=index-query-parm]
- [[index-recovery-api-response-body]]
- ==== {api-response-body-title}
- `id`::
- (Integer)
- ID of the shard.
- `type`::
- +
- --
- (String)
- Recovery type.
- Returned values include:
- `STORE`::
- The recovery is related to
- a node startup or failure.
- This type of recovery is called a local store recovery.
- `SNAPSHOT`::
- The recovery is related to
- a <<snapshots-restore-snapshot,snapshot restoration>>.
- `REPLICA`::
- The recovery is related to
- a <<glossary-replica-shard,primary shard replication>>.
- `RELOCATING`::
- The recovery is related to
- the relocation of a shard
- to a different node in the same cluster.
- --
- `STAGE`::
- +
- --
- (String)
- Recovery stage.
- Returned values include:
- `DONE`::
- Complete.
- `FINALIZE`::
- Cleanup.
- `INDEX`::
- Reading index metadata and copying bytes from source to destination.
- `INIT`::
- Recovery has not started.
- `START`::
- Starting the recovery process; opening the index for use.
- `TRANSLOG`::
- Replaying transaction log .
- --
- `primary`::
- (Boolean)
- If `true`,
- the shard is a primary shard.
- `start_time`::
- (String)
- Timestamp of recovery start.
- `stop_time`::
- (String)
- Timestamp of recovery finish.
- `total_time_in_millis`::
- (String)
- Total time to recover shard in milliseconds.
- `source`::
- +
- --
- (Object)
- Recovery source.
- This can include:
- * A repository description if recovery is from a snapshot
- * A description of source node
- --
- `target`::
- (Object)
- Destination node.
- `index`::
- (Object)
- Statistics about physical index recovery.
- `translog`::
- (Object)
- Statistics about translog recovery.
- `start`::
- (Object)
- Statistics about time to open and start the index.
- [[index-recovery-api-example]]
- ==== {api-examples-title}
- [[index-recovery-api-multi-ex]]
- ===== Get recovery information for several data streams and indices
- [source,console]
- --------------------------------------------------
- GET index1,index2/_recovery?human
- --------------------------------------------------
- // TEST[s/^/PUT index1\nPUT index2\n/]
- [[index-recovery-api-all-ex]]
- ===== Get segment information for all data streams and indices in a cluster
- //////////////////////////
- Here we create a repository and snapshot index1 in
- order to restore it right after and prints out the
- index recovery result.
- [source,console]
- --------------------------------------------------
- # create the index
- PUT index1
- {"settings": {"index.number_of_shards": 1}}
- # create the repository
- PUT /_snapshot/my_repository
- {"type": "fs","settings": {"location": "recovery_asciidoc" }}
- # snapshot the index
- PUT /_snapshot/my_repository/snap_1?wait_for_completion=true
- {"indices": "index1"}
- # delete the index
- DELETE index1
- # and restore the snapshot
- POST /_snapshot/my_repository/snap_1/_restore?wait_for_completion=true
- --------------------------------------------------
- [source,console-result]
- --------------------------------------------------
- {
- "snapshot": {
- "snapshot": "snap_1",
- "indices": [
- "index1"
- ],
- "shards": {
- "total": 1,
- "failed": 0,
- "successful": 1
- }
- }
- }
- --------------------------------------------------
- //////////////////////////
- [source,console]
- --------------------------------------------------
- GET /_recovery?human
- --------------------------------------------------
- // TEST[continued]
- The API returns the following response:
- [source,console-result]
- --------------------------------------------------
- {
- "index1" : {
- "shards" : [ {
- "id" : 0,
- "type" : "SNAPSHOT",
- "stage" : "INDEX",
- "primary" : true,
- "start_time" : "2014-02-24T12:15:59.716",
- "start_time_in_millis": 1393244159716,
- "stop_time" : "0s",
- "stop_time_in_millis" : 0,
- "total_time" : "2.9m",
- "total_time_in_millis" : 175576,
- "source" : {
- "repository" : "my_repository",
- "snapshot" : "my_snapshot",
- "index" : "index1",
- "version" : "{version}",
- "restoreUUID": "PDh1ZAOaRbiGIVtCvZOMww"
- },
- "target" : {
- "id" : "ryqJ5lO5S4-lSFbGntkEkg",
- "host" : "my.fqdn",
- "transport_address" : "my.fqdn",
- "ip" : "10.0.1.7",
- "name" : "my_es_node"
- },
- "index" : {
- "size" : {
- "total" : "75.4mb",
- "total_in_bytes" : 79063092,
- "reused" : "0b",
- "reused_in_bytes" : 0,
- "recovered" : "65.7mb",
- "recovered_in_bytes" : 68891939,
- "percent" : "87.1%"
- },
- "files" : {
- "total" : 73,
- "reused" : 0,
- "recovered" : 69,
- "percent" : "94.5%"
- },
- "total_time" : "0s",
- "total_time_in_millis" : 0,
- "source_throttle_time" : "0s",
- "source_throttle_time_in_millis" : 0,
- "target_throttle_time" : "0s",
- "target_throttle_time_in_millis" : 0
- },
- "translog" : {
- "recovered" : 0,
- "total" : 0,
- "percent" : "100.0%",
- "total_on_start" : 0,
- "total_time" : "0s",
- "total_time_in_millis" : 0,
- },
- "verify_index" : {
- "check_index_time" : "0s",
- "check_index_time_in_millis" : 0,
- "total_time" : "0s",
- "total_time_in_millis" : 0
- }
- } ]
- }
- }
- --------------------------------------------------
- // TESTRESPONSE[s/: (\-)?[0-9]+/: $body.$_path/]
- // TESTRESPONSE[s/: "[^"]*"/: $body.$_path/]
- ////
- The TESTRESPONSE above replace all the fields values by the expected ones in the test,
- because we don't really care about the field values but we want to check the fields names.
- ////
- This response includes information
- about a single index recovering a single shard.
- The source of the recovery is a snapshot repository
- and the target of the recovery is the `my_es_node` node.
- The response also includes the number
- and percentage of files and bytes recovered.
- [[index-recovery-api-detailed-ex]]
- ===== Get detailed recovery information
- To get a list of physical files in recovery,
- set the `detailed` query parameter to `true`.
- [source,console]
- --------------------------------------------------
- GET _recovery?human&detailed=true
- --------------------------------------------------
- // TEST[s/^/PUT index1\n{"settings": {"index.number_of_shards": 1}}\n/]
- The API returns the following response:
- [source,console-result]
- --------------------------------------------------
- {
- "index1" : {
- "shards" : [ {
- "id" : 0,
- "type" : "STORE",
- "stage" : "DONE",
- "primary" : true,
- "start_time" : "2014-02-24T12:38:06.349",
- "start_time_in_millis" : "1393245486349",
- "stop_time" : "2014-02-24T12:38:08.464",
- "stop_time_in_millis" : "1393245488464",
- "total_time" : "2.1s",
- "total_time_in_millis" : 2115,
- "source" : {
- "id" : "RGMdRc-yQWWKIBM4DGvwqQ",
- "host" : "my.fqdn",
- "transport_address" : "my.fqdn",
- "ip" : "10.0.1.7",
- "name" : "my_es_node"
- },
- "target" : {
- "id" : "RGMdRc-yQWWKIBM4DGvwqQ",
- "host" : "my.fqdn",
- "transport_address" : "my.fqdn",
- "ip" : "10.0.1.7",
- "name" : "my_es_node"
- },
- "index" : {
- "size" : {
- "total" : "24.7mb",
- "total_in_bytes" : 26001617,
- "reused" : "24.7mb",
- "reused_in_bytes" : 26001617,
- "recovered" : "0b",
- "recovered_in_bytes" : 0,
- "percent" : "100.0%"
- },
- "files" : {
- "total" : 26,
- "reused" : 26,
- "recovered" : 0,
- "percent" : "100.0%",
- "details" : [ {
- "name" : "segments.gen",
- "length" : 20,
- "recovered" : 20
- }, {
- "name" : "_0.cfs",
- "length" : 135306,
- "recovered" : 135306
- }, {
- "name" : "segments_2",
- "length" : 251,
- "recovered" : 251
- }
- ]
- },
- "total_time" : "2ms",
- "total_time_in_millis" : 2,
- "source_throttle_time" : "0s",
- "source_throttle_time_in_millis" : 0,
- "target_throttle_time" : "0s",
- "target_throttle_time_in_millis" : 0
- },
- "translog" : {
- "recovered" : 71,
- "total" : 0,
- "percent" : "100.0%",
- "total_on_start" : 0,
- "total_time" : "2.0s",
- "total_time_in_millis" : 2025
- },
- "verify_index" : {
- "check_index_time" : 0,
- "check_index_time_in_millis" : 0,
- "total_time" : "88ms",
- "total_time_in_millis" : 88
- }
- } ]
- }
- }
- --------------------------------------------------
- // TESTRESPONSE[s/"source" : \{[^}]*\}/"source" : $body.$_path/]
- // TESTRESPONSE[s/"details" : \[[^\]]*\]/"details" : $body.$_path/]
- // TESTRESPONSE[s/: (\-)?[0-9]+/: $body.$_path/]
- // TESTRESPONSE[s/: "[^"]*"/: $body.$_path/]
- ////
- The TESTRESPONSE above replace all the fields values by the expected ones in the test,
- because we don't really care about the field values but we want to check the fields names.
- It also removes the "details" part which is important in this doc but really hard to test.
- ////
- The response includes a listing
- of any physical files recovered
- and their sizes.
- The response also includes timings in milliseconds
- of the various stages of recovery:
- * Index retrieval
- * Translog replay
- * Index start time
- This response indicates the recovery is `done`.
- All recoveries,
- whether ongoing or complete,
- are kept in the cluster state
- and may be reported on at any time.
- To only return information about ongoing recoveries,
- set the `active_only` query parameter to `true`.
|