我正在使用solr搜索引擎。我最初定义了一个模式,并使用DIH将数据从SQL db导入到solr。我在sql db中有一个新列,并且使用以前的一些列填充了该值。现在,我必须将这个新列索引到solr中。
我的问题是:我是否对所有记录执行更新,还是使用DIH从solr删除所有记录并重建索引?我问这个问题,因为我已经读过如果我们对任何文档执行更新,solr首先删除索引然后再重建它。
答案 0 :(得分:3)
关于速度的答案一如既往地“取决于”。但重新索引通常更容易。它不需要将所有字段存储在Solr中,而且无论如何它都是您必须支持的 - 因此它不需要任何其他代码。
它还为索引提供了更多的灵活性,因为正如您所说,如果您要进行部分更新,实际的实现是内部删除+添加(因为可能存在依赖于您的字段的字段) “更改,更新处理器,跨群集分发等” - 这需要存储所有字段。这可能会对索引大小产生巨大影响,这可能不是必需的 - 特别是如果您拥有数据库中的所有内容以用于所有其他用途。
因此,关于速度,您可能只需要尝试(文档大小,数据库速度,字段大小等将影响每个单例的情况) - 但通常重新索引的速度不是是最重要的部分。
答案 1 :(得分:0)
如果您更新索引,请不要忘记事后对其进行优化(例如通过管理控制台)以删除所有已删除的文档。