SOLR - 根据索引大小删除文档

时间:2013-10-10 23:27:40

标签: solr

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

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

2 个答案:

答案 0 :(得分: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"/>
 -->

您确定文档平均大小的策略,并根据该文档删除一组有效的选项。

答案 1 :(得分:0)

我想你可以试试这个:

  1. 使用(averageDocSize = indexSize / totalDocuments)获取平均文档大小
  2. 计算10%的尺寸(sizeToDelete = indexSize * 0.1)。
  3. 计算要删除的文件数(n = sizeToDelete / averageDocSize)。
  4. 使用您之前的查询获取最早的n个文档。
  5. 删除文件
  6. Index size Total number of documents