我有一个solr独立服务器(不是solr cloud),持有来自几个不同来源的文档。
通常我需要更新源文档,通常我会通过删除该源/组中的所有文档,并为该源索引新文档来做到这一点,但这会创建一个时间间隔,我没有该文档来源,这并不理想。 其中一些文档可能会从一个更新保留到另一个更新,一些更改可能会更新,但有些可能会消失,需要删除。
最好的方法是什么?
有没有办法从源中删除所有文档,但不提交,并在同一事务索引中再次删除源,然后才提交? (这不会造成该信息源没有信息的时间间隔)
使用核心交换解决方案吗? (或者我复杂化了吗?)
答案 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/
集合别名对于重新索引也很有用 - 尤其是在何时 处理静态指数。您可以在新集合中重新编制索引 在现有系列中提供服务。一旦重新索引是 完成后,您只需交换新的集合,然后删除 使用您的读取副别名的第一个集合。