我有一个cosmos容器,在子属性下存储不同数据结构的文档,我们称之为杂项,但是有些文档在杂项下有共同的属性需要查询。
我当前正在使用默认索引策略,但希望切换到显式索引模型,以减少在其他属性下索引的数据量。
然而,MS 文档中的这一段“所有显式包含的路径都将值添加到容器中每个项目的索引中,即使给定项目的路径未定义。” 来自 https://learn.microsoft.com /en-us/azure/cosmos-db/index-policy#includeexclude-strategy 似乎建议如果我向其他属性添加任何显式索引,所有没有指定属性的文档也将被索引。
这可能会导致索引比默认索引策略下更大,因为需要在杂项属性下添加多个索引。
有没有办法在指定显式索引时保留默认索引策略的行为,即未定义的值不被索引?
杂项下可以存在无限数量的属性,因此我无法将属性添加到排除列表中而不进行索引。
您使用以下政策。
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path":"/*"
},
{
"path": "/miscellaneous/commonProperty1/?"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
{
"path": "/miscellaneous/*"
}
]
}
这里我排除了
miscellaneous
下的所有属性,并包含了 commonproperty
,这在所有记录中都很常见。
通过这样做,您只需索引所有记录中的公共属性。
同样,您也包含案例中的所有常见属性。