首页 > 解决方案 > Cosmos DB - 从索引中排除 _ts、_rid 和 _self 等系统属性是否安全?

问题描述

当使用默认索引策略创建容器时,我注意到它_etag会自动添加到排除的路径中,这是可以理解的,因为它是不透明的,并且您不应该在其值上构建任何应用程序逻辑。

其他系统属性如_ts,_rid_self呢?

假设我永远不会查询这些属性中的任何一个,通过将这些属性添加到容器索引策略中的排除路径中来从索引中排除这些属性是否安全?

或者 Cosmos DB 引擎是否以某种方式在内部使用这些属性来进行高效查询或其他目的?

标签: azureazure-cosmosdbazure-cosmosdb-sqlapi

解决方案


因此 _rid 和 _self 永远不会被索引,因此无需在索引策略中明确排除它们。

_ts 已编入索引,因此如果您愿意,您可以明确排除该索引以及 _etag,如您所提到的,该索引已为您排除。

有一个属性是您不能排除的,那就是 id。除非您完全关闭索引,否则无论您是否愿意,这都会被索引。


推荐阅读