DocExpirationUpdateProcessorFactory 不删除记录
DocExpirationUpdateProcessorFactory not deleting records
我正在尝试使用 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"
这是因为我将 ttl 设置为 date
类型,它应该设置为 string
类型并且应该设置为 "+60SECONDS"
而不是 "NOW+60SECONDS"
我正在尝试使用 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"
这是因为我将 ttl 设置为 date
类型,它应该设置为 string
类型并且应该设置为 "+60SECONDS"
而不是 "NOW+60SECONDS"