使用Solr 6.0.0,我跟着this walkthrough配置了集合中文档的自动过期。
我的默认solrconfig.xml只有添加(根据演练建议)
<!-- auto delete collection -->
<updateRequestProcessorChain default="true">
<processor class="solr.TimestampUpdateProcessorFactory">
<str name="fieldName">timestamp_dt</str>
</processor>
<processor class="solr.processor.DocExpirationUpdateProcessorFactory">
<int name="autoDeletePeriodSeconds">30</int>
<str name="ttlFieldName">time_to_live_s</str>
<str name="expirationFieldName">expire_at_dt</str>
</processor>
<processor class="solr.FirstFieldValueUpdateProcessorFactory">
<str name="fieldName">expire_at_dt</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
我使用以上配置创建了集合;
bin/solr create -c tweets -d tweets_configs -s 1 -rf 1
插入的文件
date -u && curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/tweets/update?commit=true' -d '[{"id":"live_forever"},{"id":"live_2_minutes_a", "time_to_live_s":"+120SECONDS"}]'
和
date -u && curl -X POST -H 'Content-Type: application/json'
'http://localhost:8983/solr/tweets/update?commit=true&_ttl_=%2B5MINUTES' -d
'[{"id":"live_a_long_time",
"expire_at_dt":"3000-01-01T00:00:00Z" },
{"id":"live_2_minutes_b",
"time_to_live_s":"+120SECONDS"},
{"id":"use_default_ttl"}]'
但是当我查询文件时,根据演练没有到期设置;
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":19,
"params":{
"q":"*:*",
"indent":"on",
"wt":"json"}},
"response":{"numFound":5,"start":0,"docs":[
{
"id":"live_forever",
"_version_":1533920832055672832},
{
"id":"live_2_minutes_a",
"time_to_live_s":"+120SECONDS",
"_version_":1533920832086081536},
{
"id":"live_a_long_time",
"expire_at_dt":"3000-01-01T00:00:00Z",
"_version_":1533921242796523520},
{
"id":"live_2_minutes_b",
"time_to_live_s":"+120SECONDS",
"_version_":1533921242825883648},
{
"id":"use_default_ttl",
"_version_":1533921242829029376}]
}}
而我期望看到根据步骤1中配置的多个机制自动设置到期时间。
它在6.0.0中的工作方式与4.8不同吗?或者我错过了一些明显的东西?
答案 0 :(得分:0)
我只有一个默认的updateRequestProcessorChain但是当我开始使用data_driven_schema_configs配置集,并修改它以包含我的新updateRequestProcessorChain时,它没有被使用,因为我有;
<initParams path="/update/**">
<lst name="defaults">
<str name="update.chain">add-unknown-fields-to-the-schema</str>
</lst>
</initParams>
迫使“add-unknown-fields-to-the-schema”使用updateRequestProcessorChain。
我必须对此进行评论并使用所需的处理器更新我的默认值以使自动过期工作。非常强大的功能确实!
致Chris Hostetter来回答solr-user列表。