Elasticsearch with guaranteed transactional consistency at all times

We moved from Oracle DB to a clustered (all master eligible, all data eligible) Elasticsearch 2.4.1 without really changing the data model too much. We recently found an issue that when the network latency is higher, the Elasticsearch nodes go out of sync and the micro-services read stale data and cause inconsistencies in the state machine.

The product requires guaranteed transactional consistency at all times - and Elasticsearch was probably not the correct choice of database

However, we are at a stage where changing the DB may be a costly option

Is there any set of configurations (API options) that can be done to achieve guaranteed transactional consistency at all times?

Is there any way to set up Elasticsearch as a master-slave so that only one node is active at any time and all the primary shards are located on the same node - and the slave node is just for high availability?

Elasticsearch 2.4.1 is positively ancient and has a few known and documented issues that might cause this. You should upgrade.

1 Like