Elasticsearch - Missing Indexing on Alias Update
In this blog post: https://www.elastic.co/blog/changing-mapping-with-zero-downtime/ , I use the recommended best practice to update the index in production with zero downtime using aliases. Regardless, we occasionally see "index missing" exceptions in our application during upgrade. I can't show you how to diagnose this and I'm not sure what the problem is.
Current process
- Determine that the index targets the default alias (there is at most 1)
- The sequence of the current index name, adding / increasing counter: index-name-v1
- Create new index and fill data
- Update the alias in one operation: drop the old index and add a new index
- Remove an index that is version -2 from the current current index - This is to ensure that an index returning data before the alias was updated is not deleted.
Despite all this, we get a random and regular index that skips errors when querying data. The alias is never deleted, only updated atomically. Is there something wrong with this approach that I am not considering?
public virtual void SwapAlias(string aliasName, string oldIndexName, string newIndexName)
{
Client.Alias(a =>
{
a.Add(add => add.Alias(aliasName).Index(newIndexName));
if (oldIndexName != null && oldIndexName != newIndexName)
a.Remove(remove => remove.Alias(aliasName).Index(oldIndexName));
return a;
});
}
+3
source to share
No one has answered this question yet
See similar questions:
or similar: