0

我正在使用solr索引大约40m个项目,最终索引文件大约是20G。以下是增量导入后的消息:

<lst name="statusMessages">
<str name="Time Elapsed">0:51:44.149</str>
<str name="Total Requests made to DataSource">1</str>
<str name="Total Rows Fetched">5634016</str>
<str name="Total Documents Skipped">0</str>
<str name="Full Dump Started">2012-09-27 01:25:17</str>
<str name="">
Indexing completed. Added/Updated: 5634016 documents. Deleted 0 documents.
</str>

我想知道什么 solr 正在做这个状态?并且消息replication?command=details返回是:

<lst name="masterDetails">
<str name="indexSize">36.69 GB</str>

该指数几乎翻了一番,而且还会更大。这让我非常困惑。我正在做增量导入,为什么替换时索引会是双倍大小?

4

2 回答 2

0

如果您要更换大部分文件,这是正常的。lucene 中的更新包括文档的删除和重新插入,因为索引段是一次写入的。当您删除一个文档时,您并没有真正删除它,而只是将其标记为已删除,同样因为这些段是一次性写入的。

当下一次合并发生时,删除的文档将被真正删除,此时将从您拥有的小段中创建一个新的更大的段。那是您应该看到索引大小减小的时候。这意味着您的索引大小不仅应该增加。合并或多或少根据使用的合并策略发生。如果要手动强制合并,可以使用 forceMerge 操作,这是优化的新名称。根据使用的 solr 版本,您需要使用第一个或第二个。小心,因为如果您有很多文档,forceMerge 需要一段时间。也看看这篇文章。

于 2012-09-27T10:30:17.673 回答
0

在 Solr 3.6 之前,dataImportHandler 默认设置 optimize=true:

http://wiki.apache.org/solr/DataImportHandler

无论其他设置如何,这都会触发将所有段合并为一个段。我认为您可以通过向 debug.jsp 添加一个优化复选框来解决这个问题,尽管我实际上并没有尝试过。

于 2016-02-13T03:50:03.607 回答