DocExpirationUpdateProcessorFactory不删除记录

时间:2015-02-04 04:24:55

标签: solr solr4 solrcloud

我正在尝试使用Solr 4.10.1版本中的DocExpirationUpdateProcessorFactoryfactory。

我在solrconfig.xml中包含以下内容

<updateRequestProcessorChain default="true">
    <processor class="solr.UUIDUpdateProcessorFactory">
        <str name="fieldName">id</str>
    </processor>

    <processor class="solr.TimestampUpdateProcessorFactory">
        <str name="fieldName">timestamp</str>
    </processor>
    <processor class="solr.processor.DocExpirationUpdateProcessorFactory">
        <int name="autoDeletePeriodSeconds">30</int>
        <str name="ttlFieldName">ttl</str>
        <str name="expirationFieldName">expire_at</str>
    </processor>
    <processor class="solr.LogUpdateProcessorFactory" />
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

我在schema.xml中包含了以下内容

    <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
    <field name="ttl" type="date" indexed="true" stored="true" default="NOW+60SECONDS" multiValued="false"/>
    <field name="expire_at" type="date" indexed="true" stored="true"  multiValued="false"/>   

正如您所看到的那样,我将生存时间设置为60秒并检查每30秒删除一次,当我插入文档时,检查一分钟或几分钟或一小时后它永远不会被删除。

这是我在索引文档中看到的内容,您能告诉我这里可能出现的问题吗?请注意,在Solr文档中永远不会生成expire_at字段,如下所示。

"id": "3888a8ac-fbc4-437a-8248-132384753c00",
"timestamp": "2015-02-04T04:09:21.29Z",
"_version_": 1492147724740460500,
"ttl": "2015-02-04T04:10:21.29Z"

1 个答案:

答案 0 :(得分:0)

这是因为我将ttl设置为date类型,应该将其设置为string类型,并且应设置为"+60SECONDS"而不是"NOW+60SECONDS" }