0

我正在运行 Solr4.1。我确实有一个版本字段,但我不明白如何通过关于时间的查询来删除。我的架构中没有任何字段,其中包含我可以看到的时间戳。

我要做的是运行一个查询,删除所有早于 30 天的文档。

我已经尝试了所有可以在网上找到的东西。

curl http://localhost:8983/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>_version_:[* TO NOW-60DAYS] </query></delete>'

curl http://localhost:8983/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>timestamp:[* TO NOW-60DAYS] </query></delete>'

curl http://localhost:8983/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>createTime:[* TO NOW-60DAYS] </query></delete>'

其他删除工作正常,例如

curl http://localhost:8983/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>field:value</query></delete>'
4

1 回答 1

2

您可以启用包含在 schema.xml 中的时间戳字段,只是将其注释掉。每次将文档插入索引时,该字段都会自动填充当前日期时间。在您的 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-02-28T01:27:22.070 回答