Adding analysers to an ES Index without downtime

Just looking for some direction on solving a problem.

Our requirements need us to change our index occasionally to add new mappings and filters/normalizers/analyzers.

These operations are not always allowed as an update to an existing index while still maintaining access to an index for search and insert/update. This index is not an append index, we do updates and deletes on documents.

I've tried the _reindex command that allows us to copy our docs to a new index with a new definition, but it happens as a task that eventually completes, which would leave us with a delta between the old and new versions of the index (just to confirm, it does seem we can run _reindex again to close this delta, but it’s a bit of a clumsy solution, plus with my test datasets being a fraction of what we have in our production data set, I’m not sure if it’s just reindexing the whole set again.)

I was hoping to set up replication with the idea that we would just roll over to the new index when we deploy our app using a _clone but this has the caveat that it copies the index definition and mappings to the new index which defeats the object of what we are trying to do.

Is there a way to replicate from one index to another index within a cluster that has different mappings to the source index, or am I heading in the wrong direction completely?

There's no clean way to do this unfortunately.

You could look at using query-time analysers, but that also comes with a cost.