On Elasticsearch: Change of Mind, change your Distro

Elastic, the company behind Elasticsearch and other tools, decided to publish future versions of their products under a Server Side Public License (SSPL) instead of keeping the open source Apache License (ALv2). Their change of heart leaves you with uncertainty. We feel the same way!!

What does that mean for your running Elasticsearch instances and your products that rely on it? What about the future? Using SSPL versions may impose legal risks.

In the open source world there is always the way of forking the software in question. That’s how LibreOffice and MariaDB were spawned. And there are signals that ElasticSearch will be forked as well. Amazon — or better say AWS — already maintains a seperate so called “Open Distro for Elasticsearch” and now promises to use the ALv2 for it. Additionally logz.io announced to create a seperate fork and is looking for partners.

Since we are using a dockerized Elasticsearch in our software stack, we decided to react to that ongoing rumble. So to make it short: Switching to the AWS docker image was easy as pie!
We use docker-compose in our software stack and the (simplified) block for Elasticsearch in our docker-compose.yml was this:

Old part of docker-compose
Old configuration part in docker-compose.yml

Now we switched to the image from AWS, with image name of amazon/opendistro-for-elasticsearch:1.12.0. So the same part now looks like this:

New configuration part in docker-compose.yml

After that we rebuilt the docker-compose stack and started the container for Elasticsearch and checked our software connection (a NodeJS application). The result was, that we only had to fix a single configuration problem with the connection; now forcing an encrypted / SSL connection. Since the search engine and the application containers share the same (internal) network, we do not care that much for certificate validation right now. Therefore the option rejectUnauthorized is set to false here.

We use the official Elasticsearch client for NodeJS (Client) and the connection is now established like this:

Snippet from the nodejs-Client configuration for Elasticsearch

The default username and password for the image is “admin”/”admin”…but you should change that :)

After these two steps (and roughly about 2 minutes), we switched from the original Elasticsearch docker image to the AWS Open Distro for Elasticsearch. Details of the descriptions above may change when forks are published!