我的 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 个,或者更改我的事件以了解已删除的内容,这也很困难。