Move Elasticsearch resource instances

Auth

Moves one or more instances belonging to the given Elasticsearch resource to a different allocator.

Path parameters

deployment_id string required

Identifier for the Deployment.

ref_id string required

User-specified RefId for the Resource (or '_main' if there is only one).

instance_ids string[] required

A comma-separated list of instance identifiers.

Query parameters

ignore_missing boolean · default: false

When true and the instance does not exist, proceeds to the next instance, or treats the instance as an error.

force_update boolean · default: false

When true, cancels and overwrites the pending plans, or treats the instance as an error.

instances_down boolean · default: false

When true, the instances specified by instance_ids are considered permanently shut down for data migration logic.

move_only boolean · default: true

When true, moves the specified instances and ignores the changes for the cluster state.

force_move boolean · default: false

When true, moves instance data at file-system level (not via Elasticsearch), and re-creates instances on target allocator(s).

validate_only boolean · default: false

When true, validates the move request, then returns the calculated plan without applying the plan.

Request body

Overrides the default move configuration

strategy object

The options for performing a plan change. Specify only one property each time. The default is grow_and_shrink.

rolling object

Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[all]';, rolling is required.

group_by string

Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '__all__' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '__name__' (roll one instance at a time, the default if not specified). Note that '__all__' is required when performing a major version upgrade

allow_inline_resize boolean

Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing

skip_synced_flush boolean

Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy

shard_init_wait_time integer · format: int64

The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)

grow_and_shrink object

A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. GrowShrinkStrategyConfig is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.

rolling_grow_and_shrink object

A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.

autodetect object

A strategy that lets constructor choose the most optimal way to execute the plan.

plan_configuration object

The configuration settings for the timeout and fallback parameters.

timeout integer · format: int64

The total timeout in seconds after which the plan is cancelled even if it is not complete. Defaults to 4x the max memory capacity per node (in MB). NOTES: A 3 zone cluster with 2 nodes of 2048 each would have a timeout of 4*2048=8192 seconds. Timeout does not include time required to run rollback actions.

calm_wait_time integer · format: int64

This timeout determines how long to give a cluster after it responds to API calls before performing actual operations on it. It defaults to 5s

move_instances object[]
from string required

The instance id that is going to be moved

to string[]

An optional list of allocator ids to which the instance should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)

instance_down boolean

Tells the infrastructure that the instance should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will automatically decide (currently: will treat the instances as up)

move_allocators object[]
from string required

The allocator id off which all instances in the cluster should be moved

to string[]

An optional list of allocator ids to which the instance(s) should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)

allocator_down boolean

Tells the infrastructure that all instances on the allocator should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will auto-decide (currently: will treat the allocator as up)

move_only boolean

If true (default: false) only move_instances and move_allocators instructions will be executed, all other changes will be ignored

reallocate_instances boolean

If true (default: false) does not allow re-using any existing instances currently in the cluster, ie even unchanged instances will be re-created

preferred_allocators string[]

List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)

preferred_allocator_tags map string to string

Map containing allocators tags in form of key value pairs, increasing the likelihood during move requests for allocators with matching tags, to be selected as target allocators

skip_snapshot boolean

If true (default: false), does not take (or require) a successful snapshot to be taken before performing any potentially destructive changes to this cluster

max_snapshot_attempts integer · format: int32

If taking a snapshot (ie unless 'skip_snapshots': true) then will retry on failure at most this number of times (default: 5)

max_snapshot_age integer · format: int64

When you take a snapshot and 'skip_snapshots' is false, specifies the maximum age in seconds of the most recent snapshot before a new snapshot is created. Default is 300

extended_maintenance boolean

If true (default false), does not clear the maintenance flag (which prevents its API from being accessed except by the constructor) on new instances added until after a snapshot has been restored, otherwise, the maintenance flag is cleared once the new instances successfully join the new cluster

cluster_reboot enum

Set to 'forced' to force a reboot as part of the upgrade plan. NOTES: (ie taking an existing plan and leaving it alone except for setting 'transient.plan_configuration.cluster_reboot': 'forced' will reboot the cluster)

Values: forced
override_failsafe boolean

If false (the default) then the plan will fail out if it believes the requested sequence of operations can result in data loss - this flag will override some of these restraints

skip_data_migration boolean

If true (default: false) then the plan will not wait for data to be migrated from old instances to new instances before continuing the plan (potentially deleting the old instances and losing data)

skip_upgrade_checker boolean

If false, the cluster is checked for issues that should be resolved before migration (eg contains old Lucene segments), if true this is bypassed

skip_post_upgrade_steps boolean

If false (the default), the cluster will run (currently) 2.x->5.x operations for any plan change ending with a 5.x cluster (eg apply a cluster license, ensure Monitoring is configured)

skip_snapshot_post_major_upgrade boolean

If false (the default), the cluster will perform a snapshot after a major version upgrade takes place

restore_snapshot object

Restores a snapshot from a local or remote repository.

repository_name string

If specified, contains the name of the snapshot repository - else will default to the Elastic Cloud system repo ('found-snapshots')

snapshot_name string required

The name of the snapshot to restore. Use '__latest_success__' to get the most recent snapshot from the specified repository

repository_config object

Configures the location of a remote repository. The default is the system repository.

raw_settings object

The remote snapshot settings raw JSON - see the Elasticsearch '_snapshot' documentation for more details on supported formats

restore_payload object

The configuration for the restore command, such as which indices you want to restore.

indices string[]

The list of indices to restore (supports +ve and -ve selection and wildcarding - see the default Elasticsearch index format documentation)

raw_settings object

This JSON object (merged with the 'indices' field (if present) is passed untouched into the restore command - see the Elasticsearch '_snapshot' documentation for more details on supported formats

strategy enum

The restore strategy to use. Defaults to a full restore. Partial restore will attempt to restore unavailable indices only

Values: partial full recovery
source_cluster_id string

If specified, contains the name of the source cluster id. Do not send this if you are sending repository_config

remote_clusters object

The list of resources used as remote clusters

resources object[] required

The remote resources

deployment_id string required

The id of the deployment

elasticsearch_ref_id string required

The locally-unique user-specified id of an Elasticsearch Resource

alias string required

The alias for this remote cluster. Aliases must only contain letters, digits, dashes and underscores

skip_unavailable boolean

If true, skip this cluster during search if it is disconnected. Default: false

info object

Information about a Remote Cluster.

healthy boolean required

Whether or not the remote cluster is healthy

connected boolean required

Whether or not there is at least one connection to the remote cluster.

compatible boolean required

Whether or not the remote cluster version is compatible with this cluster version.

trusted boolean required

Whether or not the remote cluster is trusted by this cluster.

trusted_back boolean required

Whether or not the remote cluster trusts this cluster back.

cluster_settings_json object

If specified, contains transient settings to be applied to an Elasticsearch cluster during changes,default values shown below applied. These can be overridden by specifying them in the map (or null to unset). Additional settings can also be set. Settings will be cleared after the plan has finished. If not specified, no settings will be applied. NOTE: These settings are only explicitly cleared for 5.x+ clusters, they must be hand-reset to their defaults in 2.x- (or a cluster reboot will clear them).

  • indices.store.throttle.max_bytes_per_sec: 120Mb
  • indices.recovery.max_bytes_per_sec: 120Mb
  • cluster.routing.allocation.cluster_concurrent_rebalance: 5
  • cluster.routing.allocation.node_initial_primaries_recoveries: 5
  • cluster.routing.allocation.node_concurrent_incoming_recoveries: 5 For version 8.1 and later no defaults are provided through this mechanism, but instead hardware dependent settings are provided to each instance.

Responses

If validate_only is true, the calculated plan is returned

application/json
strategy object

The options for performing a plan change. Specify only one property each time. The default is grow_and_shrink.

rolling object

Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[all]';, rolling is required.

group_by string

Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '__all__' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '__name__' (roll one instance at a time, the default if not specified). Note that '__all__' is required when performing a major version upgrade

allow_inline_resize boolean

Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing

skip_synced_flush boolean

Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy

shard_init_wait_time integer · format: int64

The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)

grow_and_shrink object

A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. GrowShrinkStrategyConfig is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.

rolling_grow_and_shrink object

A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.

autodetect object

A strategy that lets constructor choose the most optimal way to execute the plan.

plan_configuration object

The configuration settings for the timeout and fallback parameters.

Same fields as plan_configuration
restore_snapshot object

Restores a snapshot from a local or remote repository.

repository_name string

If specified, contains the name of the snapshot repository - else will default to the Elastic Cloud system repo ('found-snapshots')

snapshot_name string required

The name of the snapshot to restore. Use '__latest_success__' to get the most recent snapshot from the specified repository

repository_config object

Configures the location of a remote repository. The default is the system repository.

raw_settings object

The remote snapshot settings raw JSON - see the Elasticsearch '_snapshot' documentation for more details on supported formats

restore_payload object

The configuration for the restore command, such as which indices you want to restore.

indices string[]

The list of indices to restore (supports +ve and -ve selection and wildcarding - see the default Elasticsearch index format documentation)

raw_settings object

This JSON object (merged with the 'indices' field (if present) is passed untouched into the restore command - see the Elasticsearch '_snapshot' documentation for more details on supported formats

strategy enum

The restore strategy to use. Defaults to a full restore. Partial restore will attempt to restore unavailable indices only

Values: partial full recovery
source_cluster_id string

If specified, contains the name of the source cluster id. Do not send this if you are sending repository_config

remote_clusters object

The list of resources used as remote clusters

Same fields as remote_clusters
cluster_settings_json object

If specified, contains transient settings to be applied to an Elasticsearch cluster during changes,default values shown below applied. These can be overridden by specifying them in the map (or null to unset). Additional settings can also be set. Settings will be cleared after the plan has finished. If not specified, no settings will be applied. NOTE: These settings are only explicitly cleared for 5.x+ clusters, they must be hand-reset to their defaults in 2.x- (or a cluster reboot will clear them).

  • indices.store.throttle.max_bytes_per_sec: 120Mb
  • indices.recovery.max_bytes_per_sec: 120Mb
  • cluster.routing.allocation.cluster_concurrent_rebalance: 5
  • cluster.routing.allocation.node_initial_primaries_recoveries: 5
  • cluster.routing.allocation.node_concurrent_incoming_recoveries: 5 For version 8.1 and later no defaults are provided through this mechanism, but instead hardware dependent settings are provided to each instance.

The move command was issued successfully. Use the "GET" command on the /{deployment_id} resource to monitor progress

application/json

Response Type: object

  • The Deployment specified by {deployment_id} cannot be found. (code: deployments.deployment_not_found)
  • The Elasticsearch Resource specified by {ref_id} cannot be found. (code: deployments.deployment_resource_not_found)
  • One or more instances of the given resource type are missing. (code: deployments.instances_missing_on_update_error)
application/json
errors object[] required

A list of errors that occurred in the failing request

code string required

A structured code representing the error type that occurred

message string required

A human readable message describing the error that occurred

fields string[]

If the error can be tied to a specific field or fields in the user request, this lists those fields

Response headers

x-cloud-error-codes enum

The error codes associated with the response