Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Indexování ve službě Cosmos DB je navržené tak, aby poskytovalo rychlý a flexibilní výkon dotazů bez ohledu na to, jak se vaše data vyvíjejí. V této příručce upravíte zásady indexování pro kontejner pomocí portálu Fabric nebo sady Azure SDK.
Požadavky
Existující kapacita fabricu
- Pokud kapacitu Fabric nemáte, spusťte zkušební verzi Fabric.
Existující databáze Cosmos DB v systému Fabric
- Pokud ji ještě nemáte, vytvořte novou databázi Cosmos DB ve Fabric.
Existující kontejner s daty
- Pokud ho ještě nemáte, doporučujeme načíst ukázkový kontejner dat.
- Python 3.12 nebo novější
- Node.js 22 nebo novější
- .NET SDK 9.0 nebo novější
Nastavení pomocí portálu Fabric
Nejprve pomocí portálu Fabric nastavte zásady indexování pro kontejner.
Otevřete portál Fabric (https://app.fabric.microsoft.com).
Přejděte do existující databáze Cosmos DB.
Vyberte a rozbalte existující kontejner. Pak vyberte Nastavení.
V části Nastavení vyberte kartu Zásady indexování .
V editoru aktualizujte nastavení na novou hodnotu. Představte si například tuto ukázkovou strukturu dokumentů, která obsahuje obchodní data i systémová metadata:
{ "id": "product-123", "_etag": "abc123def456", "name": "Wireless Headphones", "category": "Electronics", "price": 99.99, "metadata": { "createdBy": "system", "lastModified": "2025-10-30T10:30:00Z", "version": 1.2, "tags": ["internal", "generated"], "audit": { "importSource": "legacy-system", "reviewStatus": "pending" } } }Můžete vytvořit zásadu indexování, která indexuje všechny vlastnosti s výjimkou polí metadat, která se obvykle nepoužívají v dotazech:
{ "indexingMode": "consistent", "automatic": true, "includedPaths": [ { "path": "/*" } ], "excludedPaths": [ { "path": "/_etag/?" }, { "path": "/metadata/*" } ] }Poznámka:
Cesta
/_etag/?slouží?k vyloučení samotné vlastnosti_etag, zatímco/metadata/*používá*k vyloučení celéhometadataobjektu a všech jeho podřízených vlastností.S použitím této zásady indexování v ukázkovém dokumentu:
-
Indexované vlastnosti:
id,name, ,categoryprice(a všechny ostatní vlastnosti kromě těch vyloučených) -
Vyloučeno z indexování:
-
_etagvlastnost (jedna hodnota) - Celý objekt
metadatavčetněcreatedBy,lastModified,version,tagsa vnořeného objektuaudits jeho vlastnostmi
-
Tento přístup optimalizuje úložiště a výkon vyloučením systémových metadat, která se obvykle nepoužívají v uživatelských dotazech, a přitom umožňuje prohledávat všechna obchodní data.
-
Indexované vlastnosti:
Nastavení pomocí sady Azure SDK
Nakonec pomocí sady Azure SDK nastavte zásady indexování pro kontejner.
database = client.get_database_client("<database-name>")
container = database.get_container_client("<container-name>")
# Create policy that indexes all paths except metadata fields
indexing_policy = {
"indexingMode": "consistent",
"automatic": True,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/_etag/?"
},
{
"path": "/metadata/*"
}
]
}
# Apply the indexing policy to the container
await database.replace_container(container, partition_key=PartitionKey(path='/<partition-key-path>'), indexing_policy=indexing_policy)
const container: Container = client.database('<database-name>').container('<container-name>');
const { resource: containerProperties } = await container.read();
// Create policy that indexes all paths except metadata fields
containerProperties['indexingPolicy'] = {
indexingMode: 'consistent',
automatic: true,
includedPaths: [
{
path: '/*'
}
],
excludedPaths: [
{
path: '/_etag/?'
},
{
path: '/metadata/*'
}
]
}
await container.replace(containerProperties);
Container container = client
.GetDatabase("<database-name>")
.GetContainer("<container-name>");
ContainerProperties properties = await container.ReadContainerAsync();
// Create policy that indexes all paths except metadata fields
IndexingPolicy indexingPolicy = new()
{
IndexingMode = IndexingMode.Consistent,
Automatic = true
};
indexingPolicy.IncludedPaths.Add(
new IncludedPath { Path = "/*" }
);
indexingPolicy.ExcludedPaths.Add(
new ExcludedPath{ Path = "/_etag/?" }
);
indexingPolicy.ExcludedPaths.Add(
new ExcludedPath{ Path = "/metadata/*" }
);
properties.IndexingPolicy = indexingPolicy;
await container.ReplaceContainerAsync(properties);