Я пытаюсь использовать DocExpirationUpdateProcessorFactoryfactory в версии Solr 4.10.1.
Я включил следующее в свой 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 секунд, когда я вставляю документ, и проверяю через минуту, пару или час, что он никогда не удаляется.
Это то, что я вижу в проиндексированном документе. Не могли бы вы сообщить мне, в чем может быть проблема? Обратите внимание, что поле expire_at никогда не создается в документе Solr, как показано ниже.
"id": "3888a8ac-fbc4-437a-8248-132384753c00",
"timestamp": "2015-02-04T04:09:21.29Z",
"_version_": 1492147724740460500,
"ttl": "2015-02-04T04:10:21.29Z"