Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr索引花费的时间太长了_Solr_Indexing - Fatal编程技术网

Solr索引花费的时间太长了

Solr索引花费的时间太长了,solr,indexing,Solr,Indexing,我们需要在Solr中创建索引,这花费的时间太长了。我们有大约800k条记录,按索引速度,似乎需要15到20天。我们现在正在寻找一个一次性索引。有什么建议吗?为什么索引要花这么多时间?预处理步骤需要时间吗?因为这似乎花费了很长时间。 这些是数据库记录还是丰富的文档? 您如何为数据编制索引?您正在运行频繁提交或优化吗? 系统内存、cpu、空间表现如何? 可能需要重新访问中的某些设置 如果上述各项都很好,您可以尝试一个选项- 创建单独的内核并运行并行作业来索引数据。索引完成后,您可以合并索引或使用。我

我们需要在Solr中创建索引,这花费的时间太长了。我们有大约800k条记录,按索引速度,似乎需要15到20天。我们现在正在寻找一个一次性索引。有什么建议吗?

为什么索引要花这么多时间?预处理步骤需要时间吗?因为这似乎花费了很长时间。
这些是数据库记录还是丰富的文档?
您如何为数据编制索引?您正在运行频繁提交或优化吗?
系统内存、cpu、空间表现如何?
可能需要重新访问中的某些设置

如果上述各项都很好,您可以尝试一个选项-

创建单独的内核并运行并行作业来索引数据。索引完成后,您可以合并索引或使用。

我编写了一个系统来索引大约300000条记录,在一些性能测试之后,我将SOLR配置为每5分钟提交一次。请看solrconfig.xml。有几个指令与提交更改相关,但您不应该在每次记录更新后提交。每100-200条记录后提交一次,或每5分钟提交一次。这在所有数据的重新索引期间尤为重要


我选择了5分钟,因为这也是一个合理的持续同步设置,因为我们每分钟都会轮询数据库的更改。我们告诉用户,更改需要5分钟左右才能传递到SOLR,到目前为止,每个人都对此感到满意。

根据我的经验,为大块数据编制索引可能需要一段时间。我正在处理的索引有2m个项目(大小:10G)。使用DB进行完整索引大约需要40个小时

有一些因素可能会让你慢下来:

  • 记忆。一种想法是在盒子上有内存,另一种想法是允许Solr使用它。为Solr提供尽可能多的索引时间(以后可以轻松更改)
  • 垃圾收集器。默认情况下,我们遇到了很多问题(在20-30小时索引中断后,我们必须从头开始)
  • 从数据库生成Solr缓存结果
  • 检查所有查询,它们有多贵
  • 小批量索引。如果我要索引30万个项目,这将比索引3批10万个项目需要更长的时间
  • 有很多大的全文存储字段是没有帮助的(如果你不需要存储一些东西,不要这样做)

如果使用DIH,请发布数据导入配置。无需预处理步骤。这些是数据库记录。通过Drupal管理控制台为它们编制索引。服务器上没有任何其他操作,因为它尚未投入生产。这是一台四核机器,内存4 GB,硬盘200 GB。另外,它是Apache Solr使用schema.xml版本:drupal-1.4您可以为您提出的每个建议提供配置示例吗?自从多年前开始,我就不再从事该项目了。1.这是盒子的硬件规格,也许还有一些Java婴儿车。2.记不清确切的Java设置3。4.这就是SQL,运行解释并分析结果。5.您可以尝试使用来限制每个批次中涉及的记录数。6.仔细考虑你的模式,尽量减少它。试着去除一些,看看它是否对速度有任何影响。以防万一,如果它可能对其他人有用。我已经将批量大小从-1增加到50,速度增加了4倍。然后,我使用-M30G标志速度再次增加了2XGreat,为solr实例分配了更多的RAM!是的,Solr/Lucene喜欢记忆!我认为,随着批量的减少,索引更新的频率会更高,这有助于批量生产。这是一个很好的游戏,可以找到批量大小的好位置