我们不时重新索引整个数据库。通常需要数小时。但是只有最新版本出现在头版。所以我想,如果我向后重新索引数据库,也就是说,首先以“id desc”顺序重新索引记录,我可以减少服务器停机时间。
但是,从性能的角度来看,这样可以吗?它会对搜索时间产生负面影响吗?
答案 0 :(得分:2)
既然你说你正在做一个完整的重新索引,我建议你在不同的核心中进行索引并进行交换。 This answer提供了一些关于如何实现这一目标的参考资料。
在我们的设置中,我们有一个主/从设置,其中索引在Master上发生,索引被复制到Slaves。奴隶服务于搜索请求。从性能的角度来看,这很有效。
您可能需要考虑另一件事 - 尝试查看为什么您的索引时间会持续数小时。在我们的例子中,我们意识到DataImportHandler中的嵌套查询是罪魁祸首,触发了n + 1个jdbc连接。我们通过创建视图对其进行了优化,我们的索引时间从3小时变为不到2分钟!
答案 1 :(得分:1)
为什么你有停机时间?
如果你最后提交,你只会在提交时才显示记录(并且顺序无关紧要)。
如果您正在使用maxDocs / maxTime设置(Solr 4+)进行软提交并从最新记录中重新索引,那么您几乎会立即看到这些记录,其他记录最终会显示出来。
我建议稍微阅读一下提交语义,看看是否能让事情更清楚。