【发布时间】:2020-03-01 08:51:36
【问题描述】:
我正在尝试为 COMOS 中的几个属性定义索引,但我对自动索引有点困惑。根据 Cosmos DB documentation:
默认情况下,Azure Cosmos DB 会自动为容器中的所有项目的每个属性编制索引,而无需定义任何架构或配置二级索引。
另外,请参考this:
在某些情况下,您可能希望覆盖此自动行为以更好地满足您的要求。您可以通过设置容器的索引模式来自定义容器的索引策略,并包含或排除属性路径。
从以上几点我了解到,除非我们定义自定义索引策略,否则自动索引设置为true(这是有道理的)。但是,如果我们为索引定义了自己的包含和排除 paths,否则它应该是 false。
这可能意味着,如果我如下定义容器属性,则 Cosmos DB 上的 Indexing Policy Automatic 属性应设置为 false。
using Microsoft.Azure.Cosmos; //Azure Cosmos SDK v3.3.1
.
.
var containerProperties = new ContainerProperties
{
Id = "SOME_CONTAINER_NAME",
PartitionKeyPath = "/MY_PARTITION_KEY",
};
containerProperties.IndexingPolicy.IncludedPaths.Add(new IncludedPath {Path = "/\"{MY_PARTITION_KEY}\"/?"});
containerProperties.IndexingPolicy.ExcludedPaths.Add(new ExcludedPath {Path = "/*"});
但是,我看到在 CosmosDb 索引上的上述配置被定义为 automatic 设置为 true。
Automatic 属性和ExcludedPaths 属性在IndexingPolicy class 中是否无关?如果是这样,当我们在索引策略上定义了IncludedPaths 和ExcludedPaths 时,automatic 属性意味着什么?
编辑 1
它变得有点棘手和混乱。即使在将 Automatic 属性设置为 false 后,该属性仍保留在门户中的 true。
也就是说下面的代码似乎没有任何作用。
containerProperties.IndexingPolicy.Automatic = false;
编辑 2
即使我从门户settings 更新automatic 属性,该值也不会改变。而且我也没有收到任何错误。
【问题讨论】:
标签: azure azure-cosmosdb azure-cosmosdb-sqlapi