There are several reasons why you might want to change the configuration of a cluster:
- To increase or decrease cluster capacity by changing the amount of reserved memory and storage.
- To enable high availability by adjusting the number of data centers that your cluster runs in.
- To upgrade to new versions of Elasticsearch. You can upgrade from one major version to another, such as from 1.7.5 to 2.3.5, or from one minor version to another, such as 2.3.5 to 2.4.0. You can’t downgrade versions.
- To change what plugins are available on your cluster.
You can change the configuration of a running cluster from the Configuration pane in the in the Elastic Cloud Console.
With the exception of major version upgrades, we can perform all these changes without having to interrupt your cluster. You can continue searching and indexing. The changes can also be done in bulk: in one action, you can add more memory, upgrade, adjust the number of plugins and adjust the number of availability zones.
We perform all of these changes by making the cluster with the new configuration join the existing cluster in its entirety. After joining, the new nodes will recover the indexes. When they are done, they will start receiving requests. When all the new nodes are ready, we bring down the old ones.
By doing it this way, we reduce the risk of doing any changes. If the new nodes have any problems, the old ones are still there, processing requests.
Note: If you use a Platform-as-a-Service provider like Heroku, the administration console is slightly different and does not allow you to make changes that will affect the price. That must be done in the platform provider’s add-on system. You can still do things like change Elasticsearch version or plugins.