如何在Solr 4中更新动态字段的范围?

问题描述 投票:1回答:1

我在Solr 4模式中具有以下字段

<field name="id" type="string" indexed="true" stored="true" required="true" />
<dynamicField name="rank_*" type="int" indexed="true" stored="true" />

我可以在此之下使用以下原子方式进行更新,该方法效果很好,并且不影响其他字段

{"add":{"doc":{"id":"111","rank_350":{"set":"1"},"rank_391":{"set":"4"}}},
 "add":{"doc":{"id":"222","rank_350":{"set":"1"},"rank_391":{"set":"4"}}}}

现在,我想在更新新排名之前清除所有现有排名,而不必先查询它们的排名。如果我使用上述方法并仅用新的等级进行升级,则由于更新是原子的,因此旧的两个仍将保留在那里。

[我曾尝试在一个帖子中或其他更新中使用通配符,但solr认为存在一个名为rank_ *的字段,而不是对所有级别应用null设置。

{"add":{"doc":{"id":"111","rank_*":{"set":"null"}}}

我如何将更新应用于所有rank_ *动态字段?

原因是,我不想先查询一下之前有什么内容,因为我一次最多可以批量更新200个(可以在一篇文章中完成)。如果我要查询的是201个帖子而不是1个帖子,或者更改我的活动以知道删除了什么,这也很困难。

json solr dynamic-data solr4
1个回答
0
投票

据我所知,Solr中唯一支持通配符的与字段相关的功能是fl参数,dynamicField和copyField。包括所有形式的索引的其他任何内容一次只能引用一个字段。据我所知,没有办法完全按照您的意愿去做。

© www.soinside.com 2019 - 2024. All rights reserved.