如何在Solr中没有“停机时间”的情况下更换一组文件?

我有一个solr独立服务器(不是solr云),持有来自几个不同来源的文档.

通常我需要更新源文档,通常我是通过删除该源/组中的所有文档,并为该源索引新文档来做到这一点,但这会创建一个时间间隔,我没有该源的文档,并且那不太理想.
其中一些文档可能会从一个更新保留到另一个更新,一些更改可能会更新,但有些可能会消失,需要删除.

最好的方法是什么?

有没有办法从源中删除所有文档,但不提交,并在同一事务索引中再次删除源,然后才提交? (这不会为该来源创建没有信息的时间间隔)

使用核心交换解决方案? (或者我过度复杂?)

最佳答案 好像您需要一个实时索引,它会在您更新索引时继续提供查询,而不会有任何停机时间.在某种程度上,您部分重新索引数据.

您可以考虑维护两个索引,并使用ALIASES与它们进行交互.
检查此链接:https://www.elastic.co/guide/en/elasticsearch/guide/current/multiple-indices.html
虽然它在Elasticsearch网站上,但您可以轻松使用solr中的概念.

这是关于如何创建/使用ALIASES的另一个链接
http://blog.cloudera.com/blog/2013/10/collection-aliasing-near-real-time-search-for-really-big-data/

Collection aliases are also useful for re-indexing – especially when
dealing with static indices. You can re-index in a new collection
while serving from the existing collection. Once the re-index is
complete, you simply swap in the new collection and then remove the
first collection using your read side aliases.

点赞