As a follow-up question, I would love to hear your thoughts on what the
best way to maintain distinct development / production clusters would
We have 5 clusters: development, acceptance and three production
clusters, each in a different data center (We've been live since Nov
Each cluster has a name defined in the elasticsearch.yml file, we also
add the ES version. This way a machine can't join the wrong cluster.
Each cluster has our set of applications which index and query data.
The applications are in Java and built with the corresponding ES
versions. When upgrading ES, we usually reindex data. We pull a
machine from the cluster, give it a new name (w/ new version #), build
up content. Then during a planned maintenance window, where we've
removed client traffic from that data center, upgrade the other
machines in the cluster and have them pull content off the machine w/
rebuilt content. We're still in a situation where all index content
fits on a single machine.
The content to be indexed is processed in each environment, we just
keep less of it (ie Dev has 90 days, acc 180 days), so each
environment has the same data to work (and test against).