1

每当索引占用总磁盘空间的 10% 以上时,我想清除 SOLR 索引。清除应导致删除最旧的文档,这将使索引空间小于总空间的 10%。我怎样才能找到这些最古老的文件?

我想找到单个文档的大小,并以此为基础来确定要删除多少个文档(按日期 asc 和行 = N 排序)。还有其他方法吗?谢谢。

4

2 回答 2

1

当您为文档编制索引时,您可以启用一个时间戳字段,该字段将记录文档添加到索引中的日期和时间。然后您可以查询时间戳字段以确定最旧的文档。这是一个曾经包含在 Solr 示例 schema.xml 中的示例,但在最近的版本中被删除了。

 <!-- Uncommenting the following will create a "timestamp" field using
    a default value of "NOW" to indicate when each document was indexed.
 -->
 <!--
  <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
 -->

您确定文档平均大小并基于此删除一组数字的策略听起来像是一个有效的选项。

于 2013-10-11T01:35:41.353 回答
0

我想你可以试试这个:

  1. 使用 (averageDocSize = indexSize/totalDocuments)获取平均文档大小。
  2. 计算 10% 的大小 (sizeToDelete = indexSize * 0.1)。
  3. 计算要删除的文档数 (n = sizeToDelete/averageDocSize)。
  4. 使用您之前的查询来获取最旧的 n 个文档。
  5. 删除文件

索引大小 文档总数

于 2013-10-11T14:52:58.560 回答