As is described in this post, the rollover pattern is very effective and can often boost performance if implemented correctly. However, implementing the rollover pattern involves too many steps, some of which are very likely to fail, especially for large indices.
The steps includes at least:
- create an index pattern for active indices and an alias for the latest active index
- create an index pattern for inactive indices
- create an alias for search
- call the rollover API and set configuration
And after every rollover
- set the index read-only and route all shards to a single node
- shrink the active index to a new inactive index
- force merge the inactive index to a single segment and flush
- change the alias for search to include the new inactive index and exclude the old active index
- delete the old active index
- increase the number of replicas for the new inactive index
For a large index, some of the steps above might need 30min or even 1 hour to complete. It's difficult to monitor whether these steps succeed or not, and even more difficult to write a failover policy in case that any of the steps above has failed. Also, it's extremely easy to make mistakes if you have multiple different indices all implementing the rollover pattern.
I notice that this post was written in 2016, so is there a mature automated solution in 2019?