根据这篇博文:https://www.elastic.co/blog/changing-mapping-with-zero-downtime/,我使用建议的最佳做法来更新生产中的索引,使用别名零停机。尽管如此,我们还是会定期看到"指数缺失"在更新运行时,我们的应用程序中存在异常。我似乎无法诊断出这种行为,我不确定问题是什么。
当前流程
尽管如此,我们在查询数据时会发现随机和常规索引缺失错误。别名永远不会被删除,只能原子地更新。这种方法有什么不妥之处我不考虑吗?
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;
});
}