| An update on this (complex) problem. I moved the part about implementing near-zero downtime reindexing using aliases (what you suggested initially) to HSEARCH-3499: it will not address your use case (application updates) entirely, but might still be useful for other use cases, such as periodic reindexing. We discussed a bit some solutions regarding the overall problem of updating an application to a new mapping with zero downtime. I will dump my notes here, just for future reference. It's very raw but it will help remind me what we discussed, at least; I might write up a more understandable wall of text on this later.
Need a way for messages sent from slaves to master to be detected as “obsolete” while we are hot-updating the schema.
Also, need a way to actually create a new index and populate it in such case.
Some solutions where the user affects a global “version number” to his application (and optionally we compute hashes for mappings/indexes) could help doing both (detecting obsolete indexing requests and obsolete schemas). See below.
https://imgur.com/xLshBIV
https://imgur.com/MMLj7Ye
|