Я пытаюсь реализовать TTL для документов solr, как указано в ссылке ниже:
Изменения работают нормально, когда я запускаю 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"/>
changes in managed-schema file
<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": {"status": 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
_ttl_
(по умолчанию)? Когда вы работаете в облачном режиме, все данные конфигурации хранятся в zookeeper. - person MatsLindh   schedule 04.05.2018