如果我的Solr核心有六个装有1亿个文档的小字段,那么会在合理的时间内添加一批100万个文档吗?一千万?合理的说,我在想几个小时,而不是几天。我被告知这需要很长时间才能运行。这真的是一个问题吗?有哪些改善绩效的策略?字段通常很小,即5-50个字符。
答案 0 :(得分:2)
在提高性能的其他答案中已经提到的两个建议(第一次尝试,第二次尝试):
1)在更新时减少记录:在INFO级别,SOLR为每个文档附加一个条目。请参阅此处我们是如何做到的:http://dmitrykan.blogspot.fi/2011/01/solr-speed-up-batch-posting.html有些人报告说“x3速度提升”。
2)将solrconfig.xml中的段数量设置为非常大的索引值,例如10000.批量索引编制完成后,将参数值更改回合理的低值,如10。
答案 1 :(得分:1)
这是一个非常“棘手”的问题,其答案因架构而异。
由您来决定长时间运行的数据发布是否存在问题。如果您的应用程序是用户密集型的,那么我建议您遵循某种主从配置,以便在发布数据时用户不会受到高CPU使用率的影响。我所知道的关于提高性能的一些策略是“分片”。
http://carsabi.com/car-news/2012/03/23/step-by-step-solr-sharding/
或者是否可以通过某个字段划分记录并将这些不同的文档放在不同的服务器上。
答案 2 :(得分:1)
1亿条记录是Solr的一个相当大的索引。但是在好的机器上添加1000万条记录应该是几小时而不是几天。您可能会发现t he following email thread很有趣,因为它包含深入的问题以及关于调整10M记录索引过程的最终建议。
此外,您没有说明您是否“存储”字段以及索引它们。如果您这样做,您也可以期待Solr 4.1 field compression。
答案 3 :(得分:0)
影响索引性能的重要参数(就时间而言)是您定义 data-config.xml 文件的方式。
如果您的字段来自数据库中的多个表,则可以通过两种方式对其进行配置:
第二种方法比第一种方法更快,这在很大程度上是因为针对数据库的查询数量减少了。