# Snapshots

class elasticsearch.client.SnapshotClient

  To use this client, access `client.snapshot` from an `Elasticsearch` client. For example:

      from elasticsearch import Elasticsearch

      # Create the client instance
      client = Elasticsearch(...)
      # Use the snapshot client
      client.snapshot.<method>(...)

  cleanup_repository(*, name, error_trace=None, filter_path=None, human=None, master_timeout=None, pretty=None, timeout=None)

    Clean up the snapshot repository.

    Trigger the review of the contents of a snapshot repository and delete any stale data not referenced by existing snapshots.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-cleanup-repository

    Parameters:

      - name (str) – The name of the snapshot repository to clean up.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for a connection to the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1

      - timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata. If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged. To indicate that the request should never timeout, set it to -1.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  clone(*, repository, snapshot, target_snapshot, indices=None, error_trace=None, filter_path=None, human=None, master_timeout=None, pretty=None, body=None)

    Clone a snapshot.

    Clone part of all of a snapshot into another snapshot in the same repository.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-clone

    Parameters:

      - repository (str) – The name of the snapshot repository that both source and target snapshot belong to.

      - snapshot (str) – The source snapshot name.

      - target_snapshot (str) – The target snapshot name.

      - indices (str | None) – A comma-separated list of indices to include in the snapshot. Multi-target syntax is supported.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

      - body (Dict[str, Any] | None)

    Return type:

      ObjectApiResponse[Any]

  create(*, repository, snapshot, error_trace=None, expand_wildcards=None, feature_states=None, filter_path=None, human=None, ignore_unavailable=None, include_global_state=None, indices=None, master_timeout=None, metadata=None, partial=None, pretty=None, wait_for_completion=None, body=None)

    Create a snapshot.

    Take a snapshot of a cluster or of data streams and indices.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-create

    Parameters:

      - repository (str) – The name of the repository for the snapshot.

      - snapshot (str) – The name of the snapshot. It supportes date math. It must be unique in the repository.

      - expand_wildcards (Sequence[str | Literal['all', 'closed', 'hidden', 'none', 'open']] | str | ~typing.Literal['all', 'closed', 'hidden', 'none', 'open'] | None) – Determines how wildcard patterns in the indices parameter match data streams and indices. It supports comma-separated values such as open,hidden.

      - feature_states (Sequence[str] | None) – The feature states to include in the snapshot. Each feature state includes one or more system indices containing related data. You can view a list of eligible features using the get features API. If include_global_state is true, all current feature states are included by default. If include_global_state is false, no feature states are included by default. Note that specifying an empty array will result in the default behavior. To exclude all feature states, regardless of the include_global_state value, specify an array with only the value none ([“none”]).

      - ignore_unavailable (bool | None) – If true, the request ignores data streams and indices in indices that are missing or closed. If false, the request returns an error for any data stream or index that is missing or closed.

      - include_global_state (bool | None) – If true, the current cluster state is included in the snapshot. The cluster state includes persistent cluster settings, composable index templates, legacy index templates, ingest pipelines, and ILM policies. It also includes data stored in system indices, such as Watches and task records (configurable via feature_states).

      - indices (str | Sequence[str] | None) – A comma-separated list of data streams and indices to include in the snapshot. It supports a multi-target syntax. The default is an empty array ([]), which includes all regular data streams and regular indices. To exclude all data streams and indices, use -*. You can’t use this parameter to include or exclude system indices or system data streams from a snapshot. Use feature_states instead.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for a connection to the master node. If no response is received before the timeout expires, the request fails and returns an error.

      - metadata (Mapping[str, Any] | None) – Arbitrary metadata to the snapshot, such as a record of who took the snapshot, why it was taken, or any other useful data. It can have any contents but it must be less than 1024 bytes. This information is not automatically generated by Elasticsearch.

      - partial (bool | None) – If true, it enables you to restore a partial snapshot of indices with unavailable shards. Only shards that were successfully included in the snapshot will be restored. All missing shards will be recreated as empty. If false, the entire restore operation will fail if one or more indices included in the snapshot do not have all primary shards available.

      - wait_for_completion (bool | None) – If true, the request returns a response when the snapshot is complete. If false, the request returns a response when the snapshot initializes.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

      - body (Dict[str, Any] | None)

    Return type:

      ObjectApiResponse[Any]

  create_repository(*, name, repository=None, body=None, error_trace=None, filter_path=None, human=None, master_timeout=None, pretty=None, timeout=None, verify=None)

    Create or update a snapshot repository.

    IMPORTANT: If you are migrating searchable snapshots, the repository name must be identical in the source and destination clusters. To register a snapshot repository, the cluster's global metadata must be writeable. Ensure there are no cluster blocks (for example, `cluster.blocks.read_only` and `clsuter.blocks.read_only_allow_delete` settings) that prevent write access.

    Several options for this API can be specified using a query parameter or a request body parameter. If both parameters are specified, only the query parameter is used.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-create-repository

    Parameters:

      - name (str) – The name of the snapshot repository to register or update.

      - repository (Mapping[str, Any] | None)

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata. If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged. To indicate that the request should never timeout, set it to -1.

      - verify (bool | None) – If true, the request verifies the repository is functional on all master and data nodes in the cluster. If false, this verification is skipped. You can also perform this verification with the verify snapshot repository API.

      - body (Mapping[str, Any] | None)

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  delete(*, repository, snapshot, error_trace=None, filter_path=None, human=None, master_timeout=None, pretty=None, wait_for_completion=None)

    Delete snapshots.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-delete

    Parameters:

      - repository (str) – The name of the repository to delete a snapshot from.

      - snapshot (str | Sequence[str]) – A comma-separated list of snapshot names to delete. It also accepts wildcards (*).

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - wait_for_completion (bool | None) – If true, the request returns a response when the matching snapshots are all deleted. If false, the request returns a response as soon as the deletes are scheduled.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  delete_repository(*, name, error_trace=None, filter_path=None, human=None, master_timeout=None, pretty=None, timeout=None)

    Delete snapshot repositories.

    When a repository is unregistered, Elasticsearch removes only the reference to the location where the repository is storing the snapshots. The snapshots themselves are left untouched and in place.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-delete-repository

    Parameters:

      - name (str | Sequence[str]) – The ame of the snapshot repositories to unregister. Wildcard (*) patterns are supported.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata. If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged. To indicate that the request should never timeout, set it to -1.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  get(*, repository, snapshot, after=None, error_trace=None, filter_path=None, from_sort_value=None, human=None, ignore_unavailable=None, include_repository=None, index_details=None, index_names=None, master_timeout=None, offset=None, order=None, pretty=None, size=None, slm_policy_filter=None, sort=None, state=None, verbose=None)

    Get snapshot information.

    NOTE: The `after` parameter and `next` field enable you to iterate through snapshots with some consistency guarantees regarding concurrent creation or deletion of snapshots. It is guaranteed that any snapshot that exists at the beginning of the iteration and is not concurrently deleted will be seen during the iteration. Snapshots concurrently created may be seen during an iteration.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-get

    Parameters:

      - repository (str) – A comma-separated list of snapshot repository names used to limit the request. Wildcard (*) expressions are supported.

      - snapshot (str | Sequence[str]) – A comma-separated list of snapshot names to retrieve Wildcards (*) are supported. * To get information about all snapshots in a registered repository, use a wildcard (*) or _all. * To get information about any snapshots that are currently running, use _current.

      - after (str | None) – An offset identifier to start pagination from as returned by the next field in the response body.

      - from_sort_value (str | None) – The value of the current sort column at which to start retrieval. It can be a string snapshot- or a repository name when sorting by snapshot or repository name. It can be a millisecond time value or a number when sorting by index- or shard count.

      - ignore_unavailable (bool | None) – If false, the request returns an error for any snapshots that are unavailable.

      - include_repository (bool | None) – If true, the response includes the repository name in each snapshot.

      - index_details (bool | None) – If true, the response includes additional information about each index in the snapshot comprising the number of shards in the index, the total size of the index in bytes, and the maximum number of segments per shard in the index. The default is false, meaning that this information is omitted.

      - index_names (bool | None) – If true, the response includes the name of each index in each snapshot.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for a connection to the master node. If no response is received before the timeout expires, the request fails and returns an error.

      - offset (int | None) – Numeric offset to start pagination from based on the snapshots matching this request. Using a non-zero value for this parameter is mutually exclusive with using the after parameter. Defaults to 0.

      - order (str | Literal['asc', 'desc'] | None) – The sort order. Valid values are asc for ascending and desc for descending order. The default behavior is ascending order.

      - size (int | None) – The maximum number of snapshots to return. The default is -1, which means to return all that match the request without limit.

      - slm_policy_filter (str | None) – Filter snapshots by a comma-separated list of snapshot lifecycle management (SLM) policy names that snapshots belong to. You can use wildcards (*) and combinations of wildcards followed by exclude patterns starting with -. For example, the pattern *,-policy-a-* will return all snapshots except for those that were created by an SLM policy with a name starting with policy-a-. Note that the wildcard pattern * matches all snapshots created by an SLM policy but not those snapshots that were not created by an SLM policy. To include snapshots that were not created by an SLM policy, you can use the special pattern _none that will match all snapshots without an SLM policy.

      - sort (str | Literal['duration', 'failed_shard_count', 'index_count', 'name', 'repository', 'shard_count', 'start_time'] | None) – The sort order for the result. The default behavior is sorting by snapshot start time stamp.

      - state (Sequence[str | Literal['FAILED', 'INCOMPATIBLE', 'IN_PROGRESS', 'PARTIAL', 'SUCCESS']] | str | ~typing.Literal['FAILED', 'INCOMPATIBLE', 'IN_PROGRESS', 'PARTIAL', 'SUCCESS'] | None) – Only return snapshots with a state found in the given comma-separated list of snapshot states. The default is all snapshot states.

      - verbose (bool | None) – If true, returns additional information about each snapshot such as the version of Elasticsearch which took the snapshot, the start and end times of the snapshot, and the number of shards snapshotted. NOTE: The parameters size, order, after, from_sort_value, offset, slm_policy_filter, and sort are not supported when you set verbose=false and the sort order for requests with verbose=false is undefined.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  get_repository(*, name=None, error_trace=None, filter_path=None, human=None, local=None, master_timeout=None, pretty=None)

    Get snapshot repository information.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-get-repository

    Parameters:

      - name (str | Sequence[str] | None) – A comma-separated list of snapshot repository names used to limit the request. Wildcard (*) expressions are supported including combining wildcards with exclude patterns starting with -. To get information about all snapshot repositories registered in the cluster, omit this parameter or use * or _all.

      - local (bool | None) – If true, the request gets information from the local node only. If false, the request gets information from the master node.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  repository_analyze(*, name, blob_count=None, concurrency=None, detailed=None, early_read_node_count=None, error_trace=None, filter_path=None, human=None, max_blob_size=None, max_total_data_size=None, pretty=None, rare_action_probability=None, rarely_abort_writes=None, read_node_count=None, register_operation_count=None, seed=None, timeout=None)

    Analyze a snapshot repository.

    Performs operations on a snapshot repository in order to check for incorrect behaviour.

    There are a large number of third-party storage systems available, not all of which are suitable for use as a snapshot repository by Elasticsearch. Some storage systems behave incorrectly, or perform poorly, especially when accessed concurrently by multiple clients as the nodes of an Elasticsearch cluster do. This API performs a collection of read and write operations on your repository which are designed to detect incorrect behaviour and to measure the performance characteristics of your storage system.

    The default values for the parameters are deliberately low to reduce the impact of running an analysis inadvertently and to provide a sensible starting point for your investigations. Run your first analysis with the default parameter values to check for simple problems. Some repositories may behave correctly when lightly loaded but incorrectly under production-like workloads. If the first analysis is successful, run a sequence of increasingly large analyses until you encounter a failure or you reach a `blob_count` of at least `2000`, a `max_blob_size` of at least `2gb`, a `max_total_data_size` of at least `1tb`, and a `register_operation_count` of at least `100`. Always specify a generous timeout, possibly `1h` or longer, to allow time for each analysis to run to completion. Some repositories may behave correctly when accessed by a small number of Elasticsearch nodes but incorrectly when accessed concurrently by a production-scale cluster. Perform the analyses using a multi-node cluster of a similar size to your production cluster so that it can detect any problems that only arise when the repository is accessed by many nodes at once.

    If the analysis fails, Elasticsearch detected that your repository behaved unexpectedly. This usually means you are using a third-party storage system with an incorrect or incompatible implementation of the API it claims to support. If so, this storage system is not suitable for use as a snapshot repository. Repository analysis triggers conditions that occur only rarely when taking snapshots in a production system. Snapshotting to unsuitable storage may appear to work correctly most of the time despite repository analysis failures. However your snapshot data is at risk if you store it in a snapshot repository that does not reliably pass repository analysis. You can demonstrate that the analysis failure is due to an incompatible storage implementation by verifying that Elasticsearch does not detect the same problem when analysing the reference implementation of the storage protocol you are using. For instance, if you are using storage that offers an API which the supplier claims to be compatible with AWS S3, verify that repositories in AWS S3 do not fail repository analysis. This allows you to demonstrate to your storage supplier that a repository analysis failure must only be caused by an incompatibility with AWS S3 and cannot be attributed to a problem in Elasticsearch. Please do not report Elasticsearch issues involving third-party storage systems unless you can demonstrate that the same issue exists when analysing a repository that uses the reference implementation of the same storage protocol. You will need to work with the supplier of your storage system to address the incompatibilities that Elasticsearch detects.

    The analysis may also report a failure if your repository experienced a service disruption while the analysis was running. In practice, occasional service disruptions are inevitable, but the analysis cannot itself distinguish such disruptions from incorrect behavior so must report all deviations from the expected behavior as failures. If you are certain that you can ascribe an analysis failure to such a service disruption, wait for your service provider to resolve the disruption and then re-run the analysis. Elasticsearch will be unable to create or restore snapshots during repository service disruptions, so you must ensure that these events occur only very rarely.

    If the analysis is successful, the API returns details of the testing process, optionally including how long each operation took. You can use this information to determine the performance of your storage system. If any operation fails or returns an incorrect result, the API returns an error. If the API returns an error, it may not have removed all the data it wrote to the repository. The error will indicate the location of any leftover data and this path is also recorded in the Elasticsearch logs. You should verify that this location has been cleaned up correctly. If there is still leftover data at the specified location, you should manually remove it.

    If the connection from your client to Elasticsearch is closed while the client is waiting for the result of the analysis, the test is cancelled. Some clients are configured to close their connection if no response is received within a certain timeout. An analysis takes a long time to complete so you might need to relax any such client-side timeouts. On cancellation the analysis attempts to clean up the data it was writing, but it may not be able to remove it all. The path to the leftover data is recorded in the Elasticsearch logs. You should verify that this location has been cleaned up correctly. If there is still leftover data at the specified location, you should manually remove it.

    If the analysis is successful then it detected no incorrect behaviour, but this does not mean that correct behaviour is guaranteed. The analysis attempts to detect common bugs but it does not offer 100% coverage. Additionally, it does not test the following:

    - Your repository must perform durable writes. Once a blob has been written it must remain in place until it is deleted, even after a power loss or similar disaster.
    - Your repository must not suffer from silent data corruption. Once a blob has been written, its contents must remain unchanged until it is deliberately modified or deleted.
    - Your repository must behave correctly even if connectivity from the cluster is disrupted. Reads and writes may fail in this case, but they must not return incorrect results.

    IMPORTANT: An analysis writes a substantial amount of data to your repository and then reads it back again. This consumes bandwidth on the network between the cluster and the repository, and storage space and I/O bandwidth on the repository itself. You must ensure this load does not affect other users of these systems. Analyses respect the repository settings `max_snapshot_bytes_per_sec` and `max_restore_bytes_per_sec` if available and the cluster setting `indices.recovery.max_bytes_per_sec` which you can use to limit the bandwidth they consume.

    NOTE: This API is intended for exploratory use by humans. You should expect the request parameters and the response format to vary in future versions. The response exposes immplementation details of the analysis which may change from version to version.

    NOTE: Different versions of Elasticsearch may perform different checks for repository compatibility, with newer versions typically being stricter than older ones. A storage system that passes repository analysis with one version of Elasticsearch may fail with a different version. This indicates it behaves incorrectly in ways that the former version did not detect. You must work with the supplier of your storage system to address the incompatibilities detected by the repository analysis API in any version of Elasticsearch.

    NOTE: This API may not work correctly in a mixed-version cluster.

    Implementation details

    NOTE: This section of documentation describes how the repository analysis API works in this version of Elasticsearch, but you should expect the implementation to vary between versions. The request parameters and response format depend on details of the implementation so may also be different in newer versions.

    The analysis comprises a number of blob-level tasks, as set by the `blob_count` parameter and a number of compare-and-exchange operations on linearizable registers, as set by the `register_operation_count` parameter. These tasks are distributed over the data and master-eligible nodes in the cluster for execution.

    For most blob-level tasks, the executing node first writes a blob to the repository and then instructs some of the other nodes in the cluster to attempt to read the data it just wrote. The size of the blob is chosen randomly, according to the `max_blob_size` and `max_total_data_size` parameters. If any of these reads fails then the repository does not implement the necessary read-after-write semantics that Elasticsearch requires.

    For some blob-level tasks, the executing node will instruct some of its peers to attempt to read the data before the writing process completes. These reads are permitted to fail, but must not return partial data. If any read returns partial data then the repository does not implement the necessary atomicity semantics that Elasticsearch requires.

    For some blob-level tasks, the executing node will overwrite the blob while its peers are reading it. In this case the data read may come from either the original or the overwritten blob, but the read operation must not return partial data or a mix of data from the two blobs. If any of these reads returns partial data or a mix of the two blobs then the repository does not implement the necessary atomicity semantics that Elasticsearch requires for overwrites.

    The executing node will use a variety of different methods to write the blob. For instance, where applicable, it will use both single-part and multi-part uploads. Similarly, the reading nodes will use a variety of different methods to read the data back again. For instance they may read the entire blob from start to end or may read only a subset of the data.

    For some blob-level tasks, the executing node will cancel the write before it is complete. In this case, it still instructs some of the other nodes in the cluster to attempt to read the blob but all of these reads must fail to find the blob.

    Linearizable registers are special blobs that Elasticsearch manipulates using an atomic compare-and-exchange operation. This operation ensures correct and strongly-consistent behavior even when the blob is accessed by multiple nodes at the same time. The detailed implementation of the compare-and-exchange operation on linearizable registers varies by repository type. Repository analysis verifies that that uncontended compare-and-exchange operations on a linearizable register blob always succeed. Repository analysis also verifies that contended operations either succeed or report the contention but do not return incorrect results. If an operation fails due to contention, Elasticsearch retries the operation until it succeeds. Most of the compare-and-exchange operations performed by repository analysis atomically increment a counter which is represented as an 8-byte blob. Some operations also verify the behavior on small blobs with sizes other than 8 bytes.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-repository-analyze

    Parameters:

      - name (str) – The name of the repository.

      - blob_count (int | None) – The total number of blobs to write to the repository during the test. For realistic experiments, set this parameter to at least 2000.

      - concurrency (int | None) – The number of operations to run concurrently during the test. For realistic experiments, leave this parameter unset.

      - detailed (bool | None) – Indicates whether to return detailed results, including timing information for every operation performed during the analysis. If false, it returns only a summary of the analysis.

      - early_read_node_count (int | None) – The number of nodes on which to perform an early read operation while writing each blob. Early read operations are only rarely performed. For realistic experiments, leave this parameter unset.

      - max_blob_size (int | str | None) – The maximum size of a blob to be written during the test. For realistic experiments, set this parameter to at least 2gb.

      - max_total_data_size (int | str | None) – An upper limit on the total size of all the blobs written during the test. For realistic experiments, set this parameter to at least 1tb.

      - rare_action_probability (float | None) – The probability of performing a rare action such as an early read, an overwrite, or an aborted write on each blob. For realistic experiments, leave this parameter unset.

      - rarely_abort_writes (bool | None) – Indicates whether to rarely cancel writes before they complete. For realistic experiments, leave this parameter unset.

      - read_node_count (int | None) – The number of nodes on which to read a blob after writing. For realistic experiments, leave this parameter unset.

      - register_operation_count (int | None) – The minimum number of linearizable register operations to perform in total. For realistic experiments, set this parameter to at least 100.

      - seed (int | None) – The seed for the pseudo-random number generator used to generate the list of operations performed during the test. To repeat the same set of operations in multiple experiments, use the same seed in each experiment. Note that the operations are performed concurrently so might not always happen in the same order on each run. For realistic experiments, leave this parameter unset.

      - timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period of time to wait for the test to complete. If no response is received before the timeout expires, the test is cancelled and returns an error. For realistic experiments, set this parameter sufficiently long to allow the test to complete.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  repository_verify_integrity(*, name, blob_thread_pool_concurrency=None, error_trace=None, filter_path=None, human=None, index_snapshot_verification_concurrency=None, index_verification_concurrency=None, max_bytes_per_sec=None, max_failed_shard_snapshots=None, meta_thread_pool_concurrency=None, pretty=None, snapshot_verification_concurrency=None, verify_blob_contents=None)

    Verify the repository integrity.

    Verify the integrity of the contents of a snapshot repository.

    This API enables you to perform a comprehensive check of the contents of a repository, looking for any anomalies in its data or metadata which might prevent you from restoring snapshots from the repository or which might cause future snapshot create or delete operations to fail.

    If you suspect the integrity of the contents of one of your snapshot repositories, cease all write activity to this repository immediately, set its `read_only` option to `true`, and use this API to verify its integrity. Until you do so:

    - It may not be possible to restore some snapshots from this repository.
    - Searchable snapshots may report errors when searched or may have unassigned shards.
    - Taking snapshots into this repository may fail or may appear to succeed but have created a snapshot which cannot be restored.
    - Deleting snapshots from this repository may fail or may appear to succeed but leave the underlying data on disk.
    - Continuing to write to the repository while it is in an invalid state may causing additional damage to its contents.

    If the API finds any problems with the integrity of the contents of your repository, Elasticsearch will not be able to repair the damage. The only way to bring the repository back into a fully working state after its contents have been damaged is by restoring its contents from a repository backup which was taken before the damage occurred. You must also identify what caused the damage and take action to prevent it from happening again.

    If you cannot restore a repository backup, register a new repository and use this for all future snapshot operations. In some cases it may be possible to recover some of the contents of a damaged repository, either by restoring as many of its snapshots as needed and taking new snapshots of the restored data, or by using the reindex API to copy data from any searchable snapshots mounted from the damaged repository.

    Avoid all operations which write to the repository while the verify repository integrity API is running. If something changes the repository contents while an integrity verification is running then Elasticsearch may incorrectly report having detected some anomalies in its contents due to the concurrent writes. It may also incorrectly fail to report some anomalies that the concurrent writes prevented it from detecting.

    NOTE: This API is intended for exploratory use by humans. You should expect the request parameters and the response format to vary in future versions.

    NOTE: This API may not work correctly in a mixed-version cluster.

    The default values for the parameters of this API are designed to limit the impact of the integrity verification on other activities in your cluster. For instance, by default it will only use at most half of the `snapshot_meta` threads to verify the integrity of each snapshot, allowing other snapshot operations to use the other half of this thread pool. If you modify these parameters to speed up the verification process, you risk disrupting other snapshot-related operations in your cluster. For large repositories, consider setting up a separate single-node Elasticsearch cluster just for running the integrity verification API.

    The response exposes implementation details of the analysis which may change from version to version. The response body format is therefore not considered stable and may be different in newer versions.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-repository-verify-integrity

    Parameters:

      - name (str | Sequence[str]) – The name of the snapshot repository.

      - blob_thread_pool_concurrency (int | None) – If verify_blob_contents is true, this parameter specifies how many blobs to verify at once.

      - index_snapshot_verification_concurrency (int | None) – The maximum number of index snapshots to verify concurrently within each index verification.

      - index_verification_concurrency (int | None) – The number of indices to verify concurrently. The default behavior is to use the entire snapshot_meta thread pool.

      - max_bytes_per_sec (str | None) – If verify_blob_contents is true, this parameter specifies the maximum amount of data that Elasticsearch will read from the repository every second.

      - max_failed_shard_snapshots (int | None) – The number of shard snapshot failures to track during integrity verification, in order to avoid excessive resource usage. If your repository contains more than this number of shard snapshot failures, the verification will fail.

      - meta_thread_pool_concurrency (int | None) – The maximum number of snapshot metadata operations to run concurrently. The default behavior is to use at most half of the snapshot_meta thread pool at once.

      - snapshot_verification_concurrency (int | None) – The number of snapshots to verify concurrently. The default behavior is to use at most half of the snapshot_meta thread pool at once.

      - verify_blob_contents (bool | None) – Indicates whether to verify the checksum of every data blob in the repository. If this feature is enabled, Elasticsearch will read the entire repository contents, which may be extremely slow and expensive.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  restore(*, repository, snapshot, error_trace=None, feature_states=None, filter_path=None, human=None, ignore_index_settings=None, ignore_unavailable=None, include_aliases=None, include_global_state=None, index_settings=None, indices=None, master_timeout=None, partial=None, pretty=None, rename_pattern=None, rename_replacement=None, wait_for_completion=None, body=None)

    Restore a snapshot.

    Restore a snapshot of a cluster or data streams and indices.

    You can restore a snapshot only to a running cluster with an elected master node. The snapshot repository must be registered and available to the cluster. The snapshot and cluster versions must be compatible.

    To restore a snapshot, the cluster's global metadata must be writable. Ensure there are't any cluster blocks that prevent writes. The restore operation ignores index blocks.

    Before you restore a data stream, ensure the cluster contains a matching index template with data streams enabled. To check, use the index management feature in Kibana or the get index template API:

        GET _index_template/*?filter_path=index_templates.name,index_templates.index_template.index_patterns,index_templates.index_template.data_stream

    If no such template exists, you can create one or restore a cluster state that contains one. Without a matching index template, a data stream can't roll over or create backing indices.

    If your snapshot contains data from App Search or Workplace Search, you must restore the Enterprise Search encryption key before you restore the snapshot.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-restore

    Parameters:

      - repository (str) – The name of the repository to restore a snapshot from.

      - snapshot (str) – The name of the snapshot to restore.

      - feature_states (Sequence[str] | None) – The feature states to restore. If include_global_state is true, the request restores all feature states in the snapshot by default. If include_global_state is false, the request restores no feature states by default. Note that specifying an empty array will result in the default behavior. To restore no feature states, regardless of the include_global_state value, specify an array containing only the value none ([“none”]).

      - ignore_index_settings (Sequence[str] | None) – The index settings to not restore from the snapshot. You can’t use this option to ignore index.number_of_shards. For data streams, this option applies only to restored backing indices. New backing indices are configured using the data stream’s matching index template.

      - ignore_unavailable (bool | None) – If true, the request ignores any index or data stream in indices that’s missing from the snapshot. If false, the request returns an error for any missing index or data stream.

      - include_aliases (bool | None) – If true, the request restores aliases for any restored data streams and indices. If false, the request doesn’t restore aliases.

      - include_global_state (bool | None) – If true, restore the cluster state. The cluster state includes: * Persistent cluster settings * Index templates * Legacy index templates * Ingest pipelines * Index lifecycle management (ILM) policies * Stored scripts * For snapshots taken after 7.12.0, feature states If include_global_state is true, the restore operation merges the legacy index templates in your cluster with the templates contained in the snapshot, replacing any existing ones whose name matches one in the snapshot. It completely removes all persistent settings, non-legacy index templates, ingest pipelines, and ILM lifecycle policies that exist in your cluster and replaces them with the corresponding items from the snapshot. Use the feature_states parameter to configure how feature states are restored. If include_global_state is true and a snapshot was created without a global state then the restore request will fail.

      - index_settings (Mapping[str, Any] | None) – Index settings to add or change in restored indices, including backing indices. You can’t use this option to change index.number_of_shards. For data streams, this option applies only to restored backing indices. New backing indices are configured using the data stream’s matching index template.

      - indices (str | Sequence[str] | None) – A comma-separated list of indices and data streams to restore. It supports a multi-target syntax. The default behavior is all regular indices and regular data streams in the snapshot. You can’t use this parameter to restore system indices or system data streams. Use feature_states instead.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - partial (bool | None) – If false, the entire restore operation will fail if one or more indices included in the snapshot do not have all primary shards available. If true, it allows restoring a partial snapshot of indices with unavailable shards. Only shards that were successfully included in the snapshot will be restored. All missing shards will be recreated as empty.

      - rename_pattern (str | None) – A rename pattern to apply to restored data streams and indices. Data streams and indices matching the rename pattern will be renamed according to rename_replacement. The rename pattern is applied as defined by the regular expression that supports referencing the original text, according to the appendReplacement logic.

      - rename_replacement (str | None) – The rename replacement string that is used with the rename_pattern.

      - wait_for_completion (bool | None) – If true, the request returns a response when the restore operation completes. The operation is complete when it finishes all attempts to recover primary shards for restored indices. This applies even if one or more of the recovery attempts fail. If false, the request returns a response when the restore operation initializes.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

      - body (Dict[str, Any] | None)

    Return type:

      ObjectApiResponse[Any]

  status(*, repository=None, snapshot=None, error_trace=None, filter_path=None, human=None, ignore_unavailable=None, master_timeout=None, pretty=None)

    Get the snapshot status.

    Get a detailed description of the current state for each shard participating in the snapshot.

    Note that this API should be used only to obtain detailed shard-level information for ongoing snapshots. If this detail is not needed or you want to obtain information about one or more existing snapshots, use the get snapshot API.

    If you omit the `<snapshot>` request path parameter, the request retrieves information only for currently running snapshots. This usage is preferred. If needed, you can specify `<repository>` and `<snapshot>` to retrieve information for specific snapshots, even if they're not currently running.

    Note that the stats will not be available for any shard snapshots in an ongoing snapshot completed by a node that (even momentarily) left the cluster. Loading the stats from the repository is an expensive operation (see the WARNING below). Therefore the stats values for such shards will be -1 even though the "stage" value will be "DONE", in order to minimize latency. A "description" field will be present for a shard snapshot completed by a departed node explaining why the shard snapshot's stats results are invalid. Consequently, the total stats for the index will be less than expected due to the missing values from these shards.

    WARNING: Using the API to return the status of any snapshots other than currently running snapshots can be expensive. The API requires a read from the repository for each shard in each snapshot. For example, if you have 100 snapshots with 1,000 shards each, an API request that includes all snapshots will require 100,000 reads (100 snapshots x 1,000 shards).

    Depending on the latency of your storage, such requests can take an extremely long time to return results. These requests can also tax machine resources and, when using cloud storage, incur high processing costs.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-status

    Parameters:

      - repository (str | None) – The snapshot repository name used to limit the request. It supports wildcards (*) if <snapshot> isn’t specified.

      - snapshot (str | Sequence[str] | None) – A comma-separated list of snapshots to retrieve status for. The default is currently running snapshots. Wildcards (*) are not supported.

      - ignore_unavailable (bool | None) – If false, the request returns an error for any snapshots that are unavailable. If true, the request ignores snapshots that are unavailable, such as those that are corrupted or temporarily cannot be returned.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]

  verify_repository(*, name, error_trace=None, filter_path=None, human=None, master_timeout=None, pretty=None, timeout=None)

    Verify a snapshot repository.

    Check for common misconfigurations in a snapshot repository.

    https://www.elastic.co/docs/api/doc/elasticsearch/v9/operation-snapshot-verify-repository

    Parameters:

      - name (str) – The name of the snapshot repository to verify.

      - master_timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for the master node. If the master node is not available before the timeout expires, the request fails and returns an error. To indicate that the request should never timeout, set it to -1.

      - timeout (str | Literal[-1] | ~typing.Literal[0] | None) – The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata. If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged. To indicate that the request should never timeout, set it to -1.

      - error_trace (bool | None)

      - filter_path (str | Sequence[str] | None)

      - human (bool | None)

      - pretty (bool | None)

    Return type:

      ObjectApiResponse[Any]