原子更新或部分更新如何工作?

Rah*_*rma 2 solr solrcloud

Solr 提供部分更新文档的功能,它允许在字段级别而不是文档级别进行更新。
solr 是否在内部获取整个文档并对其进行完全重新索引?如果有人可以解释部分更新内部是如何工作的,那就太好了?

You*_*bit 6

从 solr 4 开始,Solr 允许更新部分文档。您可以更新字段的值或从多值字段添加/删除值。

在 solr 中使用部分更新或原子更新的最佳实践是,将模式中的所有索引字段定义为stored=true. 当文档发生部分更新时,Solr 在内部从先前存储的文档中获取其他字段的值以重建文档。然后它将先前的文档标记为已删除,并索引具有更高版本的新文档。

优点是,如果您想从索引中更新特定的小字段,则无需再次发送大文档。

使用部分更新功能的缺点可能是索引的大小较大。因为以前,您可能只想对某些字段建立索引而不存储它们。这将节省存储这些字段的空间。现在所有索引字段都应该标记为stored=true模式中的。这将增加 solr 上索引的大小。

  • [Solr 4.0:部分文档更新](http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/)。 (2认同)
  • 必须存储所有字段的原因是因为该功能或多或少只是从索引中提取的文档,从请求中交换的值,然后再次在内部提交给自身(因此所有字段都被再次处理)。 (2认同)