Я пытаюсь реализовать TTL в документах solr, как указано в ссылке ниже:
DocExpirationUpdateProcessorFactory
Изменения работают нормально, когда я запускаю solr в автономном режиме на моей локальной машине. Но когда я запускаю solr в облачном режиме (например, облачный режим доступен с установкой Solr) и делаю необходимые изменения (упомянутые ниже), поле expire_at не обновляется с вычисленным значением даты из поля my_ttl.
Я вижу, что сохраненный документ имеет только поле my_ttl и поле id, поле expires_at недоступно в сохраненном документе.
Может ли кто-нибудь помочь мне понять, что я делаю неправильно в этом случае?
изменения в solr-config.xml
<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">
<!-- UUIDUpdateProcessorFactory will generate an id if none is present in the incoming document -->
<processor class="solr.processor.DocExpirationUpdateProcessorFactory">
<str name="ttlFieldName">my_ttl_</str>
<str name="ttlParamName">_ttl_</str>
<int name="autoDeletePeriodSeconds">120</int>
<str name="expirationFieldName">expires_at_</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
изменения в файле управляемой схемы
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="my_ttl" type="string" indexed="true" stored="true" required="false" multiValued="false" />
<field name="expires_at_" type="date" indexed="true" stored="true" required="false" multiValued="false" />
ЗАПРОС ПОЧТЫ
curl -H "Content-Type: application/json" -X POST -d '[{"id":"1","my_ttl":"+120SECONDS"}]' http://localhost:8983/solr/dailyforecasts/update?comit=true
{ "responseHeader": { "Статус": 0, "QTime": 8}}
Это обновление работает успешно, но поле expires_at_ не обновляется в сохраненном документе, поэтому документ действительно никогда не удаляется, несмотря на время, установленное в sole-config.xml
Но если я явно установлю поле expires_at_ в документе на дату в прошлом, то документ сохраняется, а также удаляется по истечении времени запуска истечения.
curl -H "Content-Type: application/json" -X POST -d '[{"id":"1","my_ttl":"+120SECONDS", "expires_at_":"2018-01-01T00:00:00Z"}]' http://localhost:8983/solr/dailyforecasts/update?comit=true