Upgrading the Elasticsearch version running on Docker
Self-Managed
You update Elasticsearch running in a Docker container by pulling the new Docker image and restarting the container with the new image.
Docker images for Elasticsearch are available from the Elastic Docker registry. A list of all published Docker images and tags is available at www.docker.elastic.co. The source code is in GitHub.
Upgrading your cluster can be disruptive. It is important that you plan your upgrade and take the necessary upgrade preparation steps.
The following is a list of typical upgrade preparation tasks and best practices:
- Always back up your data before performing an update, especially for production environments.
- Review the Elasticsearch release notes for the new version to be aware of any breaking changes or required actions before or after the update.
- If you're using custom plugins or configurations, ensure they are compatible with the new version and reapply them if necessary.
- If you're running a cluster, you'll need to carefully plan the upgrade process to minimize downtime and ensure cluster stability. This often involves a rolling upgrade strategy.
- When using a
docker-compose.ymlmake sure to update the desired version in the configuration file or the environment variable.
Pull the new version of the Elasticsearch Docker image from Elastic's Docker registry using the
docker pullcommand. Replace<x.y.z>with the version number you want to upgrade to.docker pull docker.elastic.co/elasticsearch/elasticsearch:<x.y.z>Stop the currently running Elasticsearch container. Replace
<container_name>with the name or ID of your Elasticsearch container.docker stop <container_name>After the container has stopped, remove it. Correctly mapping your data directory to a volume outside of the container ensures that your data is not deleted. Replace
<container_name>with the name or ID of your Elasticsearch container.docker rm <container_name>Start a new container using the new image. Use the same volume mappings and configuration settings as the old container to ensure that your data and configuration are preserved. Replace
<container_name>with the name you want for your new container.docker run --name <container_name> -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -v path_to_data_volume:/usr/share/elasticsearch/data \ -v path_to_config_volume:/usr/share/elasticsearch/config \ docker.elastic.co/elasticsearch/elasticsearch:<x.y.z>Adjust the
-pflags for port mappings,-efor environment variables, and-vfor volume mappings as needed based on your setup.After the new container starts, verify that Elasticsearch is running the new version by querying the root URL of your Elasticsearch instance.
curl http://localhost:9200 docker.elastic.co/elasticsearch/elasticsearch:<x.y.z>In the response, check that
<x.y.z>represents the Elasticsearch version number you have upgraded to.