Comosのいくつかのプロパティでインデックスを定義しようとしていますが、自動インデックスについて少し混乱しています。Cosmos DBのドキュメントによると:
既定では、Azure Cosmos DBは、スキーマを定義したり、セカンダリインデックスを構成したりすることなく、コンテナー内のすべてのアイテムのすべてのプロパティに自動的にインデックスを付けます。
状況によっては、要件に合わせてこの自動動作をオーバーライドしたい場合があります。コンテナのインデックスモードを設定することで、コンテナのインデックスポリシーをカスタマイズしたり、プロパティパスを含めたり除外したりできます。
上記の点から私が理解しているのは、カスタムインデックス作成ポリシーを定義しない限り、自動インデックス作成はに設定されtrue
ているということです(これは理にかなっています)。ただし、paths
インデックス作成のために独自のインクルードとエクスクルードを定義した場合は、である必要がありますfalse
。
コンテナのプロパティを次のように定義すると、CosmosDBでプロパティを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
プロパティとIncludedPaths
、ExcludedPaths
のプロパティIndexingPolicy
class
無関係?もしそうならautomatic
、私たちが定義IncludedPaths
しExcludedPaths
、インデックス作成ポリシーを設定したとき、プロパティはどういう意味ですか?
編集1
それはもう少しトリッキーで混乱するようになります。Automatic
プロパティをプロパティに設定しfalse
た後でもtrue
、ポータルに残ります。
つまり、以下のコードは効果がないようです。
containerProperties.IndexingPolicy.Automatic = false;
編集2
automatic
ポータルからプロパティを更新してもsettings
、値は変わりません。また、エラーも発生しません。
私はCosmosDBエンジニアリングチームの出身です。「自動」プロパティと包含/除外パスは無関係です。
「自動」プロパティは、現在ほとんどのコンテナで非推奨になっています。ドキュメントごとのレベルでインデックスディレクティブをオーバーライドすることにより、コレクションを水平方向に2つのドキュメントセット(セカンダリインデックス付きのセットとそうでないセット)に分離するために使用できます。具体的なビジネス価値の欠如に加えて、自動プロパティをfalseに設定すると、クエリがインデックスを利用したかどうかに基づいてクエリ結果に不整合が生じました(たとえば、スキャンではありません)。そのため、このプロパティは非推奨になりました(falseに設定することはできません)。
私たちが一般的に参照する「自動インデックス作成」とは、コンテナ内のすべてのドキュメントのすべてのパスがデフォルトでインデックス付けされるという事実です。これは、デフォルトのインデックス作成ポリシーのIncludedPathsセクションに/ *(「root」パスの下にあるすべて)が含まれていることからわかります。お役に立てれば。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加