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

时间:2015-06-01 16:49:06

标签: solr

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

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

最好的方法是什么?

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

使用核心交换解决方案吗? (或者我复杂化了吗?)

1 个答案:

答案 0 :(得分:2)

似乎您需要一个实时索引,它会在您更新索引时继续提供查询而不会有任何停机时间。在某种程度上,您部分重新索引数据。

您可以考虑维护两个索引,并使用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/

  

集合别名对于重新索引也很有用 - 尤其是在何时   处理静态指数。您可以在新集合中重新编制索引   在现有系列中提供服务。一旦重新索引是   完成后,您只需交换新的集合,然后删除   使用您的读取副别名的第一个集合。