无需查询即可获取 RavenDB 索引统计信息

Get RavenDB index stats without a query

我正在尝试以编程方式查明索引是否过时,理想情况下它落后了多远。

我的例子是一个索引,看用户是否有权限,根据这个索引;

public class PermissionType_GrantedTo : AbstractIndexCreationTask<Person, GrantedPermissionResult>
{
    ...
}

到目前为止,我做的最好的是这个 -- 'take 0 results' 查询索引结果 -- 我不喜欢它;

RavenQueryStatistics stats;
var results = await session.Query<GrantedPermissionResult>()
    .Statistics(out stats)
    .Take(0)
    .ToListAsync();

stale = stats.IsStale;
log($"{(stale ? "Stale" : "Fresh")}");

一定有办法获取索引的当前状态,对吗?

如果您只需要知道给定索引是否过时,您可以执行以下操作:

var indexName = new GrantedPermissionResult().IndexName;
var isStale = documentStore.DatabaseCommands.GetStatistics().StaleIndexes.Contains(indexName);

如果您需要有关任何索引的其他统计信息,可以在此处找到:

documentStore.DatabaseCommands.GetStatistics().Indexes

希望对您有所帮助。

//J