我正在探索 elasticsearch 并将其与我们当前的搜索解决方案进行比较。我的用例是,每次构建索引时,我都必须删除当前索引并创建具有相同名称的新索引。这样所有旧文档都与旧索引一起删除,新索引将具有新数据。索引过程需要几分钟才能完成。
我的问题是在此期间进入的搜索请求会发生什么。弹性搜索是否使用事务并且只提交事务中的所有更改(删除索引和新索引与新文档)?
如果我删除了索引,并且在索引过程中出现错误,会发生什么?如果没有交易,这种情况有什么解决方法吗?
我正在探索 elasticsearch 并将其与我们当前的搜索解决方案进行比较。我的用例是,每次构建索引时,我都必须删除当前索引并创建具有相同名称的新索引。这样所有旧文档都与旧索引一起删除,新索引将具有新数据。索引过程需要几分钟才能完成。
我的问题是在此期间进入的搜索请求会发生什么。弹性搜索是否使用事务并且只提交事务中的所有更改(删除索引和新索引与新文档)?
如果我删除了索引,并且在索引过程中出现错误,会发生什么?如果没有交易,这种情况有什么解决方法吗?
Elasticsearch 不支持事务。当你删除一个索引时,你删除了一个索引。在您创建新索引之前,用户将收到 IndexMissingException 异常。一旦创建了新索引,他们将只看到被索引和刷新的记录(默认情况下每秒刷新一次)。
向用户隐藏这一点的一种方法是使用aliases。您可以创建一个指向索引的别名。当您需要重新索引您的数据时,您可以创建一个新索引,在那里索引新数据,将别名切换到新索引并删除旧索引。