将大量文档添加到大型Solr核心时有哪些性能考虑因素?

时间:2013-01-10 20:33:01

标签: performance solr

如果我的Solr核心有六个装有1亿个文档的小字段,那么会在合理的时间内添加一批100万个文档吗?一千万?合理的说,我在想几个小时,而不是几天。我被告知这需要很长时间才能运行。这真的是一个问题吗?有哪些改善绩效的策略?字段通常很小,即5-50个字符。

4 个答案:

答案 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)

这是一个非常“棘手”的问题,其答案因架构而异。

  1. 您的solr安装有六个字段。但是,实际索引了多少?如果只对一个字段编制索引,那么添加100万个文档将比在索引6个字段时添加100万个文档更快。
  2. 我认为索引的字段类型也很重要。 “text_general”类型的字段在索引时被分解为标记,而“string”类型的字段则不是。不对“字符串”类型进行分析,并将其存储为一个完整的标记。
  3. 我有一些非常长的字段被索引,并且添加200万个文档需要几分钟(尽管我的安装不包含1亿个文档)。因此,我认为在您的安装中添加1000万条记录需要数天时间。
  4. 我不确定这一点,但是运行solr实例的cpu的配置也很重要。所以,您可能需要查看cpu和内存是否可以处理这么多负载。
  5. 由您来决定长时间运行的数据发布是否存在问题。如果您的应用程序是用户密集型的,那么我建议您遵循某种主从配置,以便在发布数据时用户不会受到高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 文件的方式。

如果您的字段来自数据库中的多个表,则可以通过两种方式对其进行配置:

第二种方法比第一种方法更快,这在很大程度上是因为针对数据库的查询数量减少了。