Cosmos - 添加显式索引并忽略未定义的值

问题描述 投票:0回答:1

我有一个cosmos容器,在子属性下存储不同数据结构的文档,我们称之为杂项,但是有些文档在杂项下有共同的属性需要查询。

我当前正在使用默认索引策略,但希望切换到显式索引模型,以减少在其他属性下索引的数据量。

然而,MS 文档中的这一段“所有显式包含的路径都将值添加到容器中每个项目的索引中,即使给定项目的路径未定义。” 来自 https://learn.microsoft.com /en-us/azure/cosmos-db/index-policy#includeexclude-strategy 似乎建议如果我向其他属性添加任何显式索引,所有没有指定属性的文档也将被索引。

这可能会导致索引比默认索引策略下更大,因为需要在杂项属性下添加多个索引。

有没有办法在指定显式索引时保留默认索引策略的行为,即未定义的值不被索引?

杂项下可以存在无限数量的属性,因此我无法将属性添加到排除列表中而不进行索引。

azure-cosmosdb
1个回答
0
投票

您使用以下政策。

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path":"/*"
        },
        {
            "path": "/miscellaneous/commonProperty1/?"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
        {
            "path": "/miscellaneous/*"
        }
    ]
}

这里我排除了

miscellaneous
下的所有属性,并包含了
commonproperty
,这在所有记录中都很常见。

通过这样做,您只需索引所有记录中的公共属性。

同样,您也包含案例中的所有常见属性。

© www.soinside.com 2019 - 2024. All rights reserved.