---
type: api
title: Move clusters
description: Moves the clusters to a different allocator.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/operation/operation-move-clusters
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/operation/operation-move-clusters
products:
  - Elastic Cloud Enterprise
---

# Move clusters

## Paths

- `POST` `/platform/infrastructure/allocators/{allocator_id}/clusters/_move`

- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/authentication#basicauth)
- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/authentication#apikey)

#### Path Parameters

- `allocator_id` (string)
  The allocator identifier.

## Description

Moves the clusters to a different allocator.

## Query String Parameters

- `force_update` (boolean · default: false)
  When `true`, cancels and overwrites the pending plans, or treats the instance as an error.
- `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`, execute a primitive vacate by moving data at file-system level, and recreating instances on the target allocator(s).
- `allocator_down` (boolean)
  When `true`, considers all instances on the allocator as permanently shut down when deciding how to migrate data to new nodes.When left blank, the system automatically decides. NOTE: The default treats the allocator as up.
- `validate_only` (boolean · default: false)
  When `true`, validates the plan overrides, then returns the plan without performing the move.

## Request Body

`application/json`

Overrides defaults for the move of each cluster

- `elasticsearch_clusters` ([] MoveElasticsearchClusterConfiguration) — optional
  Optional list of Elasticsearch clusters to move off the allocator.
  - `cluster_ids` ([] string) — required
    Identifiers for the Elasticsearch clusters.
  - `plan_override` ({} TransientElasticsearchPlanConfiguration) — optional
    Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Elasticsearch settings.
    - `strategy` ({} PlanStrategy) — optional
      The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
      - `rolling` ({} RollingStrategyConfig) — optional
        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) — optional
          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) — optional
          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) — optional
          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) — optional
          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` (GrowShrinkStrategyConfig) — optional
        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` (RollingGrowShrinkStrategyConfig) — optional
        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` (AutodetectStrategyConfig) — optional
        A strategy that lets constructor choose the most optimal way to execute the plan.
    - `plan_configuration` ({} ElasticsearchPlanControlConfiguration) — optional
      The configuration settings for the timeout and fallback parameters.
      - `timeout` (integer) — optional
        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) — optional
        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` ([] InstanceMoveRequest) — optional
        - `from` (string) — required
          The instance id that is going to be moved
        - `to` ([] string) — optional
          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) — optional
          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` ([] AllocatorMoveRequest) — optional
        - `from` (string) — required
          The allocator id off which all instances in the cluster should be moved
        - `to` ([] string) — optional
          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) — optional
          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) — optional
        If true (default: false) only move_instances and move_allocators instructions will be executed, all other changes will be ignored
      - `reallocate_instances` (boolean) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        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) — optional
        If false (the default), the cluster will perform a snapshot after a major version upgrade takes place
    - `restore_snapshot` ({} RestoreSnapshotConfiguration) — optional
      Restores a snapshot from a local or remote repository.
      - `repository_name` (string) — optional
        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` ({} RestoreSnapshotRepoConfiguration) — optional
        Configures the location of a remote repository. The default is the system repository.
        - `raw_settings` (object) — optional
          The remote snapshot settings raw JSON - see the Elasticsearch '_snapshot' documentation for more details on supported formats
      - `restore_payload` ({} RestoreSnapshotApiConfiguration) — optional
        The configuration for the restore command, such as which indices you want to restore.
        - `indices` ([] string) — optional
          The list of indices to restore (supports +ve and -ve selection and wildcarding - see the default Elasticsearch index format documentation)
        - `raw_settings` (object) — optional
          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) — optional
        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) — optional
        If specified, contains the name of the source cluster id. Do not send this if you are sending repository_config
    - `snapshot_dependency` ({} SnapshotDependencyConfiguration) — optional
      Configuration for attaching a snapshot repository dependency from another cluster. This creates a snapshot repository in the target cluster pointing to the source cluster's snapshots.
      - `source_cluster_id` (string) — required
        The cluster ID of the source cluster whose snapshots will be made available
    - `remote_clusters` ({} RemoteResources) — optional
      The list of resources used as remote clusters
      - `resources` ([] RemoteResourceRef) — 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) — optional
          If true, skip this cluster during search if it is disconnected. Default: false
        - `info` ({} RemoteResourceInfo) — optional
          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) — optional
      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.
- `kibana_clusters` ([] MoveKibanaClusterConfiguration) — optional
  Optional list of Kibana clusters to move off the allocator.
  - `cluster_ids` ([] string) — required
    Identifiers for the Kibana clusters.
  - `plan_override` ({} TransientKibanaPlanConfiguration) — optional
    Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Kibana instance settings.
    - `strategy` ({} PlanStrategy) — optional
      The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
      - `rolling` ({} RollingStrategyConfig) — optional
        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) — optional
          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) — optional
          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) — optional
          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) — optional
          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` (GrowShrinkStrategyConfig) — optional
        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` (RollingGrowShrinkStrategyConfig) — optional
        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` (AutodetectStrategyConfig) — optional
        A strategy that lets constructor choose the most optimal way to execute the plan.
    - `plan_configuration` ({} KibanaPlanControlConfiguration) — optional
      The configuration settings for the timeout and fallback parameters.
      - `timeout` (integer) — optional
        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)
      - `calm_wait_time` (integer) — optional
        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` ([] InstanceMoveRequest) — optional
        - `from` (string) — required
          The instance id that is going to be moved
        - `to` ([] string) — optional
          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) — optional
          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` ([] AllocatorMoveRequest) — optional
        - `from` (string) — required
          The allocator id off which all instances in the cluster should be moved
        - `to` ([] string) — optional
          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) — optional
          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)
      - `reallocate_instances` (boolean) — optional
        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) — optional
        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) — optional
        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
      - `extended_maintenance` (boolean) — optional
        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) — optional
        Set to 'forced' to force a reboot as part of the upgrade plan
        Values: `forced`
      - `override_failsafe` (boolean) — optional
        If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
- `apm_clusters` ([] MoveApmClusterConfiguration) — optional
  Optional list of Apm clusters to move off the allocator.
  - `cluster_ids` ([] string) — required
    Identifiers for the Apm clusters.
  - `plan_override` ({} TransientApmPlanConfiguration) — optional
    Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and APM Server settings.
    - `strategy` ({} PlanStrategy) — optional
      The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
      - `rolling` ({} RollingStrategyConfig) — optional
        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) — optional
          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) — optional
          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) — optional
          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) — optional
          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` (GrowShrinkStrategyConfig) — optional
        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` (RollingGrowShrinkStrategyConfig) — optional
        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` (AutodetectStrategyConfig) — optional
        A strategy that lets constructor choose the most optimal way to execute the plan.
    - `plan_configuration` ({} ApmPlanControlConfiguration) — optional
      The plan control configuration options for the APM Server.
      - `timeout` (integer) — optional
        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)
      - `calm_wait_time` (integer) — optional
        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` ([] InstanceMoveRequest) — optional
        - `from` (string) — required
          The instance id that is going to be moved
        - `to` ([] string) — optional
          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) — optional
          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` ([] AllocatorMoveRequest) — optional
        - `from` (string) — required
          The allocator id off which all instances in the cluster should be moved
        - `to` ([] string) — optional
          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) — optional
          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)
      - `reallocate_instances` (boolean) — optional
        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) — optional
        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) — optional
        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
      - `extended_maintenance` (boolean) — optional
        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) — optional
        Set to 'forced' to force a reboot as part of the upgrade plan
        Values: `forced`
      - `override_failsafe` (boolean) — optional
        If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
- `appsearch_clusters` ([] MoveAppSearchConfiguration) — optional
  Optional list of App Search clusters to move off the allocator.
  - `cluster_ids` ([] string) — required
    Identifiers for the App Searches.
  - `plan_override` ({} TransientAppSearchPlanConfiguration) — optional
    Defines configuration parameters that control how the plan (ie consisting of the cluster topology and AppSearch settings) is applied
    - `strategy` ({} PlanStrategy) — optional
      The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
      - `rolling` ({} RollingStrategyConfig) — optional
        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) — optional
          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) — optional
          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) — optional
          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) — optional
          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` (GrowShrinkStrategyConfig) — optional
        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` (RollingGrowShrinkStrategyConfig) — optional
        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` (AutodetectStrategyConfig) — optional
        A strategy that lets constructor choose the most optimal way to execute the plan.
    - `plan_configuration` ({} AppSearchPlanControlConfiguration) — optional
      - `timeout` (integer) — optional
        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)
      - `calm_wait_time` (integer) — optional
        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` ([] InstanceMoveRequest) — optional
        - `from` (string) — required
          The instance id that is going to be moved
        - `to` ([] string) — optional
          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) — optional
          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` ([] AllocatorMoveRequest) — optional
        - `from` (string) — required
          The allocator id off which all instances in the cluster should be moved
        - `to` ([] string) — optional
          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) — optional
          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)
      - `reallocate_instances` (boolean) — optional
        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) — optional
        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) — optional
        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
      - `extended_maintenance` (boolean) — optional
        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) — optional
        Set to 'forced' to force a reboot as part of the upgrade plan
        Values: `forced`
      - `override_failsafe` (boolean) — optional
        If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
- `enterprise_search_clusters` ([] MoveEnterpriseSearchConfiguration) — optional
  Optional list of Elastic Enterprise Search clusters to move off the allocator.
  - `cluster_ids` ([] string) — required
    Identifiers for the Elastic Enterprise Search clusters.
  - `plan_override` ({} TransientEnterpriseSearchPlanConfiguration) — optional
    Defines configuration parameters that control how the plan (i.e. consisting of the cluster topology and Enterprise Search settings) is applied
    - `strategy` ({} PlanStrategy) — optional
      The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
      - `rolling` ({} RollingStrategyConfig) — optional
        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) — optional
          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) — optional
          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) — optional
          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) — optional
          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` (GrowShrinkStrategyConfig) — optional
        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` (RollingGrowShrinkStrategyConfig) — optional
        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` (AutodetectStrategyConfig) — optional
        A strategy that lets constructor choose the most optimal way to execute the plan.
    - `plan_configuration` ({} EnterpriseSearchPlanControlConfiguration) — optional
      - `timeout` (integer) — optional
        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)
      - `calm_wait_time` (integer) — optional
        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` ([] InstanceMoveRequest) — optional
        - `from` (string) — required
          The instance id that is going to be moved
        - `to` ([] string) — optional
          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) — optional
          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` ([] AllocatorMoveRequest) — optional
        - `from` (string) — required
          The allocator id off which all instances in the cluster should be moved
        - `to` ([] string) — optional
          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) — optional
          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)
      - `reallocate_instances` (boolean) — optional
        If true (default: false) does not allow re-using any existing instances currently in the cluster, i.e. even unchanged instances will be re-created
      - `preferred_allocators` ([] string) — optional
        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) — optional
        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
      - `extended_maintenance` (boolean) — optional
        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) — optional
        Set to 'forced' to force a reboot as part of the upgrade plan
        Values: `forced`
      - `override_failsafe` (boolean) — optional
        If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.

## Responses

#### `202`

The move command was issued successfully, use the "GET" command on each /{cluster_id} resource to monitor progress

`application/json`

- `failures` ({} MoveClustersDetails)
  Information about the Elasticsearch clusters, multiple Kibana instances, and multiple APM Servers that are moved off of the allocator.
  - `elasticsearch_clusters` ([] MoveElasticsearchClusterDetails)
    Detailed information about the Elasticsearch clusters being moved.
    - `cluster_id` (string)
      Identifier for the Elasticsearch cluster.
    - `calculated_plan` ({} TransientElasticsearchPlanConfiguration)
      Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Elasticsearch settings.
      Same fields as `plan_override` in `elasticsearch_clusters`
    - `errors` ([] BasicFailedReplyElement)
      A list of errors that occurred if the attempt to move the cluster failed.
      - `code` (string)
        A structured code representing the error type that occurred
      - `message` (string)
        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
  - `kibana_clusters` ([] MoveKibanaClusterDetails)
    Detailed information about the Kibana clusters being moved.
    - `cluster_id` (string)
      Identifier for the Kibana cluster.
    - `calculated_plan` ({} TransientKibanaPlanConfiguration)
      Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Kibana instance settings.
      Same fields as `plan_override` in `kibana_clusters`
    - `errors` ([] BasicFailedReplyElement)
      A list of errors that occurred if the attempt to move the cluster failed.
      - `code` (string)
        A structured code representing the error type that occurred
      - `message` (string)
        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
  - `apm_clusters` ([] MoveApmClusterDetails)
    Detailed information about the Apm clusters being moved.
    - `cluster_id` (string)
      Identifier for the Apm cluster.
    - `calculated_plan` ({} TransientApmPlanConfiguration)
      Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and APM Server settings.
      Same fields as `plan_override` in `apm_clusters`
    - `errors` ([] BasicFailedReplyElement)
      A list of errors that occurred if the attempt to move the cluster failed.
      - `code` (string)
        A structured code representing the error type that occurred
      - `message` (string)
        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
  - `appsearch_clusters` ([] MoveAppSearchDetails)
    Detailed information about the App Search clusters being moved.
    - `cluster_id` (string)
      Identifier for the App Search.
    - `calculated_plan` ({} TransientAppSearchPlanConfiguration)
      Defines configuration parameters that control how the plan (ie consisting of the cluster topology and AppSearch settings) is applied
      Same fields as `plan_override` in `appsearch_clusters`
    - `errors` ([] BasicFailedReplyElement)
      A list of errors that occurred if the attempt to move the cluster failed.
      - `code` (string)
        A structured code representing the error type that occurred
      - `message` (string)
        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
  - `enterprise_search_clusters` ([] MoveEnterpriseSearchDetails)
    Detailed information about the Elastic Enterprise Search clusters being moved.
    - `cluster_id` (string)
      Identifier for the Elastic Enterprise Search.
    - `calculated_plan` ({} TransientEnterpriseSearchPlanConfiguration)
      Defines configuration parameters that control how the plan (i.e. consisting of the cluster topology and Enterprise Search settings) is applied
      Same fields as `plan_override` in `enterprise_search_clusters`
    - `errors` ([] BasicFailedReplyElement)
      A list of errors that occurred if the attempt to move the cluster failed.
      - `code` (string)
        A structured code representing the error type that occurred
      - `message` (string)
        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
- `moves` ({} MoveClustersDetails)
  Information about the Elasticsearch clusters, multiple Kibana instances, and multiple APM Servers that are moved off of the allocator.
  Same fields as `failures`
#### `400`

* The cluster definition contained errors. (code: `clusters.cluster_invalid_plan`)
* The cluster definition contained errors. (code: `clusters.plan_feature_not_implemented`)

`application/json`

- `errors` ([] BasicFailedReplyElement)
  A list of errors that occurred in the failing request
  - `code` (string)
    A structured code representing the error type that occurred
  - `message` (string)
    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

#### `403`

The move command was prohibited for the given cluster. (code: `clusters.command_prohibited`)

`application/json`

- `errors` ([] BasicFailedReplyElement)
  A list of errors that occurred in the failing request
  - `code` (string)
    A structured code representing the error type that occurred
  - `message` (string)
    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

## Code Examples

#### Console

```console
POST /platform/infrastructure/allocators/{allocator_id}/clusters/_move
```

#### curl

```curl
curl -X POST "/platform/infrastructure/allocators/{allocator_id}/clusters/_move"
```

