RavenDB 在更新一个文档时重建所有索引

RavenDB rebuilds all indexes when one document is updated

我似乎找不到这个问题的答案,即使在谷歌搜索之后也是如此。

我们遇到了导致应用程序锁定的问题。部分原因是我们有未完成的 WaitForNonStaleResultsAsOfNow 调用,我们正在等待发布修复(即我们已删除它们),但也是由于所有索引的完全重建造成的。我相信导致所有索引重建的触发器是当我们对一个(类型)文档进行更改时。例如:

我们有一个名为 "Agency" 的模型。当我们的用户登录时,我们使用他们的 "AgencyId" 来向他们提供特定于他们的数据。因此,大多数其他文档(例如 "Placements"、"Invoices" 等)都有一个 "AgencyId" 字段。

代理模型类似于:

public class Agency
{
    public string Id {get;set;}
    public string AgencyName {get;set;}
    // ... 
}

Placement 示例(以及其他机构特定文件)

public class Placement
{
    public string Id {get;set;}
    public string AgencyId {get;set;} // relates to Agency Document
    // ...
}

我们有一项功能允许管理员将文档 (PDF) 上传到机构的资料中。我们将 PDF 存储在 DFS 中,并将 Agency 模型上的 "DocumentPath" 属性 设置为保存位置。

我的问题:更新代理记录会导致重建所有相关文档的索引吗?即我知道 AgencyIndex 会重建,但这会导致 PlacementIndex(以及所有其他相关索引)也重建吗?

更多信息:
Raven 客户端构建#:2.5.2952
Raven 服务器构建#:2.5.2952 (RavenHQ)

另外值得注意:我们正在努力尽快升级到 RavenDB 3.0,但这是一个真实存在的问题,我需要了解它发生的原因!

是的,可以肯定的是,更新许多其他人指向的文档会导致索引重建。 某些类型的操作需要索引号是陈旧的(或强制更新陈旧索引)。有必要将截止日期传递给您的 WaitForNonStaleResultsAsOfNow,它可以接收 TimeSpan 作为参数,因此您将等待索引不会对预定义类型过时。