Come vengono indicizzati i dati da Azure Cosmos DB?How does Azure Cosmos DB index data?

Per impostazione predefinita, tutti i dati di Azure Cosmos DB sono indicizzati.By default, all Azure Cosmos DB data is indexed. Sebbene molti clienti siano corrette consentire di gestire automaticamente tutti gli aspetti dell'indicizzazione DB Cosmos Azure, è possibile specificare un oggetto personalizzato criteri di indicizzazione per le raccolte durante la creazione di database di Azure Cosmos.Although many customers are happy to let Azure Cosmos DB automatically handle all aspects of indexing, you can specify a custom indexing policy for collections during creation in Azure Cosmos DB. Criteri di indicizzazione nel database di Azure Cosmos sono più flessibili e potenti rispetto agli indici secondari che sono disponibili in altre piattaforme di database.Indexing policies in Azure Cosmos DB are more flexible and powerful than secondary indexes that are offered in other database platforms. Nel database Cosmos di Azure, è possibile progettare e personalizzare la forma dell'indice senza pregiudicare la flessibilità dello schema.In Azure Cosmos DB, you can design and customize the shape of the index without sacrificing schema flexibility.

Per informazioni su come indicizzazione works in Azure Cosmos DB, è importante comprendere che, quando si gestiscono i criteri di indicizzazione, è possibile rendere con granularità fine dei compromessi tra overhead di archiviazione dell'indice, scrittura e velocità effettiva di query e la coerenza delle query.To learn how indexing works in Azure Cosmos DB, it's important to understand that when you manage indexing policy, you can make fine-grained trade-offs between index storage overhead, write and query throughput, and query consistency.

In questo articolo è esaminare Azure Cosmos DB criteri, come personalizzare i criteri di indicizzazione e vantaggi e svantaggi associati di indicizzazione.In this article, we take a close look at Azure Cosmos DB indexing policies, at how to customize indexing policy, and associated trade-offs.

Alla fine della lettura, si avranno le risposte alle domande seguenti:After reading this article, you'll be able to answer the following questions:

  • Come è possibile ignorare le proprietà da includere o escludere dall'indicizzazione?How can I override the properties to include or exclude from indexing?
  • Come è possibile configurare l'indice di eventuali aggiornamenti?How can I configure the index for eventual updates?
  • Come è possibile configurare l'indicizzazione per eseguire le query ORDER BY o intervallo?How can I configure indexing to perform ORDER BY or range queries?
  • Come è possibile apportare modifiche ai criteri di indicizzazione di una raccolta?How do I make changes to a collection’s indexing policy?
  • Come confrontare archiviazione e prestazioni dei diversi criteri di indicizzazione?How do I compare storage and performance of different indexing policies?

Personalizzare i criteri di indicizzazione di una raccoltaCustomize the indexing policy of a collection

È possibile personalizzare i compromessi tra archiviazione, scrittura e le prestazioni delle query e la coerenza delle query eseguendo l'override di criteri per una raccolta di Azure Cosmos DB di indicizzazione predefiniti.You can customize the trade-offs between storage, write and query performance, and query consistency by overriding the default indexing policy on an Azure Cosmos DB collection. È possibile configurare i seguenti aspetti:You can configure the following aspects:

  • Includere o escludere i documenti e i percorsi da e verso l'indice.Include or exclude documents and paths to and from the index. È possibile escludere o includere documenti specifici nell'indice quando si inseriscono o sostituire i documenti nella raccolta.You can exclude or include specific documents in the index when you insert or replace the documents in the collection. È anche possibile includere o escludere specifiche proprietà JSON, detta anche percorsi, che si desidera indicizzare in tutti i documenti inclusi in un indice.You can also include or exclude specific JSON properties, also called paths, to be indexed across documents that are included in an index. I percorsi includono modelli jolly.Paths include wildcard patterns.
  • Configurare i vari tipi di indice.Configure various index types. Per ogni percorso incluso, è possibile specificare il tipo di indice che richiede il percorso per una raccolta.For each included path, you can specify the type of index the path requires for a collection. È possibile specificare il tipo di indice in base a dati del percorso, il carico di lavoro di query prevista e numerico o stringa "precisione".You can specify the type of index based on the path's data, the expected query workload, and numeric/string “precision.”
  • Configurare la modalità di aggiornamento indice.Configure index update modes. DB Cosmos Azure supporta tre modalità di indicizzazione: coerente, Lazy e nessuna.Azure Cosmos DB supports three indexing modes: Consistent, Lazy, and None. È possibile configurare le modalità di indicizzazione tramite i criteri di indicizzazione per una raccolta di Azure Cosmos DB.You can configure the indexing modes via the indexing policy on an Azure Cosmos DB collection.

Il seguente frammento di codice di Microsoft .NET viene illustrato come impostare un criterio personalizzato di indicizzazione quando si crea una raccolta.The following Microsoft .NET code snippet shows how to set a custom indexing policy when you create a collection. In questo esempio, si configurare il criterio con un indice di intervallo per le stringhe e numeri a precisione massima.In this example, we set the policy with a Range index for strings and numbers at the maximum precision. È possibile utilizzare questo criterio per eseguire query ORDER BY in stringhe.You can use this policy to execute ORDER BY queries against strings.

DocumentCollection collection = new DocumentCollection { Id = "myCollection" };

collection.IndexingPolicy = new IndexingPolicy(new RangeIndex(DataType.String) { Precision = -1 });
collection.IndexingPolicy.IndexingMode = IndexingMode.Consistent;

await client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("db"), collection);   

Nota

Lo schema JSON per i criteri di indicizzazione modificato con la versione dell'API REST versione 2015-06-03.The JSON schema for indexing policy changed with the release of REST API version 2015-06-03. Con tale versione, lo schema JSON per criteri di indicizzazione supporta gli indici dell'intervallo in stringhe.With that release, the JSON schema for indexing policy supports Range indexes against strings. .NET SDK 1.2.0 e Java, Python e Node.js SDK 1.1.0 supportano il nuovo schema di criteri..NET SDK 1.2.0 and Java, Python, and Node.js SDKs 1.1.0 support the new policy schema. Le versioni precedenti del SDK di utilizzano l'API REST versione 2015-04-08.Earlier versions of the SDK use the REST API version 2015-04-08. Supportano lo schema precedente per criteri di indicizzazione.They support the earlier schema for indexing policy.

Per impostazione predefinita, Azure Cosmos DB indicizza tutte le proprietà di stringa all'interno dei documenti in modo coerente con un indice Hash.By default, Azure Cosmos DB indexes all string properties within documents consistently with a Hash index. Vengono indicizzate tutte le proprietà numeriche all'interno dei documenti in modo coerente con un indice dell'intervallo.It indexes all numeric properties within documents consistently with a Range index.

Personalizzare i criteri di indicizzazione nel portaleCustomize the indexing policy in the portal

È possibile modificare i criteri di indicizzazione di una raccolta nel portale di Azure:You can change the indexing policy of a collection in the Azure portal:

  1. Nel portale, accedere al proprio account Azure Cosmos DB e quindi selezionare la raccolta.In the portal, go to your Azure Cosmos DB account, and then select your collection.
  2. Nel menu di navigazione a sinistra, selezionare impostazioni, quindi selezionare criteri di indicizzazione.In the left navigation menu, select Settings, and then select Indexing Policy.
  3. In criteri di indicizzazione, modificare i criteri di indicizzazione e quindi selezionare OK.Under Indexing Policy, change your indexing policy, and then select OK.

Modalità di indicizzazione del databaseDatabase indexing modes

DB Cosmos Azure supporta tre modalità di indicizzazione che è possibile configurare tramite i criteri di indicizzazione per una raccolta di Azure Cosmos DB: coerente, Lazy e nessuna.Azure Cosmos DB supports three indexing modes that you can configure via the indexing policy on an Azure Cosmos DB collection: Consistent, Lazy, and None.

Coerente: se i criteri della raccolta di un database di Azure Cosmos coerenti, le query in una raccolta specifica di Azure Cosmos DB seguono lo stesso livello di coerenza come specificato per le operazioni di lettura punto (sicura, con obsolescenza sessione o eventuale).Consistent: If an Azure Cosmos DB collection’s policy is Consistent, the queries on a specific Azure Cosmos DB collection follow the same consistency level as specified for the point-reads (strong, bounded-staleness, session, or eventual). L'indice viene aggiornato in modo sincrono come parte dell'aggiornamento del documento (insert, replace, update e delete un documento in una raccolta di Azure Cosmos DB).The index is updated synchronously as part of the document update (insert, replace, update, and delete a document in an Azure Cosmos DB collection).

L'indicizzazione coerente supporta le query coerente al costo di una possibile riduzione della velocità effettiva di scrittura.Consistent indexing supports consistent queries at the cost of a possible reduction in write throughput. La riduzione è una funzione di percorsi univoci che devono essere indicizzati e "livello di coerenza".This reduction is a function of the unique paths that need to be indexed and the “consistency level.” La modalità di indicizzazione coerente è progettata per carichi di lavoro "scrivi rapidamente, esegui query immediatamente".Consistent indexing mode is designed for “write quickly, query immediately” workloads.

Lazy: l'indice viene aggiornato in modo asincrono quando una raccolta di Azure Cosmos DB è inattivo, ovvero quando la capacità di velocità effettiva della raccolta non è utilizzata completamente per soddisfare le richieste utente.Lazy: The index is updated asynchronously when an Azure Cosmos DB collection is quiescent, that is, when the collection’s throughput capacity is not fully utilized to serve user requests. La modalità di indicizzazione Lazy potrebbe essere adatta per carichi di lavoro "di inserimento a questo punto, query in un secondo momento" che richiedono l'inserimento di documento.The Lazy indexing mode might be suitable for "ingest now, query later" workloads that require document ingestion. Si noti che si potrebbero ottenere risultati incoerenti in quanto indicizzati lenta e caricamento dei dati.Note that you might get inconsistent results because data is ingested and indexed slowly. Ciò significa che le query di conteggio o una query specifica risultati potrebbero non essere coerenti o repeatable in qualsiasi momento.This means that your COUNT queries or specific query results might not be consistent or repeatable at any given time.

L'indice è in genere in modalità di aggiornamento con i dati acquisiti.The index is generally in catch-up mode with ingested data. Con Lazy l'indicizzazione, durata (TTL) le modifiche l'indice verrà eliminata e ricreata.With Lazy indexing, time to live (TTL) changes result in the index being dropped and re-created. In questo modo i risultati di query e conteggio incoerente per un periodo di tempo.This makes the COUNT and query results inconsistent for a period of time. Per questo motivo, la maggior parte degli account di Azure Cosmos DB deve utilizzare la modalità di indicizzazione coerenza.Because of this, most Azure Cosmos DB accounts should use the Consistent indexing mode.

Nessuna: una raccolta contenente una None modalità indice non dispone di alcun indice associato.None: A collection that has a None index mode has no index associated with it. Viene in genere utilizzato se Azure Cosmos DB viene utilizzato come un valore di chiave di archiviazione e sono accessibili solo documenti la relativa proprietà ID.This is commonly used if Azure Cosmos DB is used as a key-value storage, and documents are accessed only by their ID property.

Nota

Configurazione dei criteri di indicizzazione con nessuno ha l'effetto collaterale di eliminare un indice esistente.Configuring the indexing policy with as None has the side effect of dropping any existing index. Da utilizzare se i modelli di accesso richiedono solo ID o collegamento self link.Use this if your access patterns require only ID or self-link.

Nella tabella seguente viene illustrata la coerenza per le query basata sulla modalità di indicizzazione (Coerente e Differita) configurata per la raccolta e il livello di coerenza specificato per la richiesta di query.The following table shows the consistency for queries based on the indexing mode (Consistent and Lazy) configured for the collection and the consistency level specified for the query request. Questo vale per le query eseguite utilizzando qualsiasi interfaccia: SDK, API REST o all'interno di stored procedure e trigger.This applies to queries made by using any interface: REST API, SDKs, or from within stored procedures and triggers.

ConsistencyConsistency La modalità di indicizzazione: coerenteIndexing mode: Consistent La modalità di indicizzazione: LazyIndexing mode: Lazy
AssolutaStrong AssolutaStrong FinaleEventual
Obsolescenza associataBounded staleness Obsolescenza associataBounded staleness FinaleEventual
sessioneSession sessioneSession FinaleEventual
FinaleEventual FinaleEventual FinaleEventual

DB Cosmos Azure restituisce un errore per le query eseguite su raccolte con un Nessuna modalità di indicizzazione.Azure Cosmos DB returns an error for queries made on collections that have a None indexing mode. È possibile eseguire query ancora come analisi tramite la proprietà esplicita x-ms-documentdb-enable-analisi intestazione nell'API REST o EnableScanInQuery richiesta opzione mediante .NET SDK.Queries can still be executed as scans via the explicit x-ms-documentdb-enable-scan header in the REST API or the EnableScanInQuery request option by using the .NET SDK. Alcune funzionalità di query, ad esempio ORDER BY non sono supportati come analisi con EnableScanInQuery.Some query features, like ORDER BY, are not supported as scans with EnableScanInQuery.

La tabella seguente illustra la coerenza per le query in base alla modalità di indicizzazione (coerenti, Lazy e nessuna) quando EnableScanInQuery specificato.The following table shows the consistency for queries based on the indexing mode (Consistent, Lazy, and None) when EnableScanInQuery is specified.

ConsistencyConsistency Modalità di indicizzazione: coerenteIndexing Mode: Consistent Modalità di indicizzazione: differitaIndexing Mode: Lazy Modalità di indicizzazione: nessunaIndexing Mode: None
AssolutaStrong AssolutaStrong FinaleEventual AssolutaStrong
Obsolescenza associataBounded staleness Obsolescenza associataBounded staleness FinaleEventual Obsolescenza associataBounded staleness
sessioneSession sessioneSession FinaleEventual sessioneSession
FinaleEventual FinaleEventual FinaleEventual FinaleEventual

La presentazione di esempio di codice seguente illustrato come creare una raccolta di Azure Cosmos DB mediante .NET SDK con indicizzazione coerente in tutti gli inserimenti di documento.The following code sample show how create an Azure Cosmos DB collection by using the .NET SDK with Consistent indexing on all document insertions.

 // Default collection creates a Hash index for all string fields and a Range index for all numeric    
 // fields. Hash indexes are compact and offer efficient performance for equality queries.

 var collection = new DocumentCollection { Id ="defaultCollection" };

 collection.IndexingPolicy.IndexingMode = IndexingMode.Consistent;

 collection = await client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("mydb"), collection);

Percorsi di indiceIndex paths

Azure DB Cosmos modelli di documenti JSON e l'indice come alberi.Azure Cosmos DB models JSON documents and the index as trees. È possibile ottimizzare i criteri per i percorsi all'interno dell'albero.You can tune to policies for paths within the tree. All'interno dei documenti, è possibile scegliere i percorsi da includere o escludere dall'indicizzazione.Within documents, you can choose the paths to include or exclude from indexing. Questo può offrire prestazioni di scrittura migliorate e archiviazione dell'indice più basso per gli scenari in cui i modelli di query sono noti in anticipo.This can offer improved write performance and lower index storage for scenarios in which the query patterns are known beforehand.

I percorsi di indice iniziano con la radice (/) e terminano in genere con il carattere jolly ?,Index paths start with the root (/) and typically end with the ? carattere jolly.wildcard operator. Ciò indica che sono presenti più valori possibili per il prefisso.This denotes that there are multiple possible values for the prefix. Ad esempio, per usare SELECT * FROM Families F WHERE F.familyName = "Andersen", è necessario includere un percorso di indice per /"familyName"/?For example, to serve SELECT * FROM Families F WHERE F.familyName = "Andersen", you must include an index path for /familyName/? nei criteri di indicizzazione della raccolta.in the collection’s index policy.

I percorsi di indice possono anche usare il carattere jolly * per specificare un comportamento ricorsivo al di sotto del prefisso.Index paths can also use the * wildcard operator to specify the behavior for paths recursively under the prefix. È ad esempio possibile usare /payload/* per escludere dall'indicizzazione qualsiasi elemento al di sotto della proprietà payload.For example, /payload/* can be used to exclude everything under the payload property from indexing.

Di seguito sono indicati i modelli comuni per la definizione di percorsi di indice:Here are the common patterns for specifying index paths:

pathPath Descrizione/Caso d'usoDescription/use case
/ Percorso predefinito per la raccolta.Default path for collection. Ricorsivo e si applica all'albero intero documento.Recursive and applies to the entire document tree.
/prop/?/prop/? Percorso di indice richiesto per gestire query simile alla seguente (con tipi Hash o Range, rispettivamente):Index path required to serve queries like the following (with Hash or Range types, respectively):

SELECT FROM collection c WHERE c.prop = "value"SELECT FROM collection c WHERE c.prop = "value"

SELECT FROM collection c WHERE c.prop > 5SELECT FROM collection c WHERE c.prop > 5

SELECT FROM collection c ORDER BY c.propSELECT FROM collection c ORDER BY c.prop
/prop//prop/ Percorso di indice per tutti i percorsi al di sotto dell'etichetta specificata.Index path for all paths under the specified label. Funziona con le query seguentiWorks with the following queries

SELECT FROM collection c WHERE c.prop = "value"SELECT FROM collection c WHERE c.prop = "value"

SELECT FROM collection c WHERE c.prop.subprop > 5SELECT FROM collection c WHERE c.prop.subprop > 5

SELECT FROM collection c WHERE c.prop.subprop.nextprop = "value"SELECT FROM collection c WHERE c.prop.subprop.nextprop = "value"

SELECT FROM collection c ORDER BY c.propSELECT FROM collection c ORDER BY c.prop
/props/[]/?/props/[]/? Percorso di indice che consente di servire iterazioni e query JOIN su matrici di valori scalari, come ["a", "b", "c"]:Index path required to serve iteration and JOIN queries against arrays of scalars like ["a", "b", "c"]:

SELECT tag FROM tag IN collection.props WHERE tag = "value"SELECT tag FROM tag IN collection.props WHERE tag = "value"

SELECT tag FROM collection c JOIN tag IN c.props WHERE tag > 5SELECT tag FROM collection c JOIN tag IN c.props WHERE tag > 5
/props/[]/subprop/?/props/[]/subprop/? Percorso di indice che consente di servire iterazioni e query JOIN su matrici di oggetti, come [{subprop: "a"}, {subprop: "b"}]:Index path required to serve iteration and JOIN queries against arrays of objects like [{subprop: "a"}, {subprop: "b"}]:

SELECT tag FROM tag IN collection.props WHERE tag.subprop = "value"SELECT tag FROM tag IN collection.props WHERE tag.subprop = "value"

SELECT tag FROM collection c JOIN tag IN c.props WHERE tag.subprop = "value"SELECT tag FROM collection c JOIN tag IN c.props WHERE tag.subprop = "value"
/prop/subprop/?/prop/subprop/? Percorso di indice richiesto per le query (con tipi Hash o Range, rispettivamente):Index path required to serve queries (with Hash or Range types, respectively):

SELECT FROM collection c WHERE c.prop.subprop = "value"SELECT FROM collection c WHERE c.prop.subprop = "value"

SELECT FROM collection c WHERE c.prop.subprop > 5SELECT FROM collection c WHERE c.prop.subprop > 5

Nota

Quando si impostano i percorsi di indice personalizzato, verrà richiesto di specificare la regola di indicizzazione predefinita per l'albero intero documento, che è identificato dal percorso speciale "/ ".When you set custom index paths, you are required to specify the default indexing rule for the entire document tree, which is denoted by the special path "/".

Nell'esempio seguente consente di configurare un percorso specifico con l'indice dell'intervallo e il valore personalizzato di precisione pari a 20 byte:The following example configures a specific path with Range index and a custom precision value of 20 bytes:

var collection = new DocumentCollection { Id = "rangeSinglePathCollection" };    

collection.IndexingPolicy.IncludedPaths.Add(
    new IncludedPath { 
        Path = "/Title/?", 
        Indexes = new Collection<Index> { 
            new RangeIndex(DataType.String) { Precision = 20 } } 
        });

// Default for everything else
collection.IndexingPolicy.IncludedPaths.Add(
    new IncludedPath { 
        Path = "/*" ,
        Indexes = new Collection<Index> {
            new HashIndex(DataType.String) { Precision = 3 }, 
            new RangeIndex(DataType.Number) { Precision = -1 } 
        }
    });

collection = await client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("db"), pathRange);

Tipi di dati, tipi di indice e precisioneIndex data types, kinds, and precisions

Sono disponibili più opzioni quando si configurano i criteri di indicizzazione per un percorso.You have multiple options when you configure the indexing policy for a path. È possibile specificare una o più definizioni di indicizzazione per ogni percorso:You can specify one or more indexing definitions for every path:

  • Tipo di dati: stringa, numero, punto, poligono o LineString (può contenere solo una voce per ogni tipo di dati per ogni percorso).Data type: String, Number, Point, Polygon, or LineString (can contain only one entry per data type per path).
  • Tipo di indice: Hash (query di uguaglianza), intervallo (uguaglianza, intervallo o query ORDER BY) o spaziale (query spaziali).Index kind: Hash (equality queries), Range (equality, range or ORDER BY queries), or Spatial (spatial queries) .
  • Precisione: indice per un Hash, il valore varia da 1 a 8 per le stringhe e numeri.Precision: For a Hash index, this varies from 1 to 8 for both strings and numbers. Il valore predefinito è 3.The default is 3. Per un indice dell'intervallo, questo valore può essere -1 (la precisione massima).For a Range index, this value can be -1 (maximum precision). E può variare tra 1 e 100 (la precisione massima) per valori di stringa o numerici.It can vary from between 1 and 100 (maximum precision) for string or number values.

Tipologia di indiceIndex kind

DB Cosmos Azure supporta indice Hash e i tipi di indice di intervallo per ogni percorso che può essere configurata per i tipi di dati stringa o numero o entrambi.Azure Cosmos DB supports Hash index and Range index kinds for every path that can be configured for String or Number data types, or both.

  • Hash supporta query di uguaglianza efficienti e query JOIN.Hash supports efficient equality and JOIN queries. Per la maggior parte dei casi, gli indici Hash non necessario una precisione superiore rispetto al valore predefinito di 3 byte.For most use cases, Hash indexes don't need a higher precision than the default value of 3 bytes. Il tipo di dati può essere stringa o numero.The data type can be String or Number.
  • Intervallo supporta le query di uguaglianza efficiente, le query di intervallo (utilizzando >, <>, =, < =,! =) e le query ORDER BY.Range supports efficient equality queries, range queries (using >, <, >=, <=, !=), and ORDER BY queries. Le query ORDER By per impostazione predefinita richiedono anche una precisione di indice massimo (-1).ORDER By queries by default also require maximum index precision (-1). Il tipo di dati può essere stringa o numero.The data type can be String or Number.

DB Cosmos Azure supporta anche il tipo di indice spaziale per ogni percorso può essere specificato per i tipi di dati LineString, Polygon o punto.Azure Cosmos DB also supports the Spatial index kind for every path that can be specified for the Point, Polygon, or LineString data types. Il valore nel percorso specificato deve essere un frammento GeoJSON valido come {"type": "Point", "coordinates": [0.0, 10.0]}.The value at the specified path must be a valid GeoJSON fragment like {"type": "Point", "coordinates": [0.0, 10.0]}.

  • Spatial supporta query spaziali (within e distance) efficienti.Spatial supports efficient spatial (within and distance) queries. Il tipo di dati può essere LineString, Polygon o punto.The data type can be Point, Polygon, or LineString.

Nota

Azure Cosmos DB supporta l'indicizzazione automatica punto Polygon e LineString di tipi di dati.Azure Cosmos DB supports automatic indexing of Point, Polygon, and LineString data types.

Di seguito sono elencati i tipi di indice supportati e gli esempi di query che possono essere utilizzati per rispondere:Here are the supported index kinds and examples of queries that they can be used to serve:

Tipologia di indiceIndex kind Descrizione/Caso d'usoDescription/use case
HashHash Hash over /prop/?Hash over /prop/? (or /) può essere usato per servire in modo efficiente le query seguenti:(or /) can be used to serve the following queries efficiently:

SELECT FROM collection c WHERE c.prop = "value"SELECT FROM collection c WHERE c.prop = "value"

Hash over /props/[]/?Hash over /props/[]/? (or / or /props/) può essere usato per servire in modo efficiente le query seguenti:(or / or /props/) can be used to serve the following queries efficiently:

SELECT tag FROM collection c JOIN tag IN c.props WHERE tag = 5SELECT tag FROM collection c JOIN tag IN c.props WHERE tag = 5
RangeRange Range over /prop/?Range over /prop/? (or /) può essere usato per servire in modo efficiente le query seguenti:(or /) can be used to serve the following queries efficiently:

SELECT FROM collection c WHERE c.prop = "value"SELECT FROM collection c WHERE c.prop = "value"

SELECT FROM collection c WHERE c.prop > 5SELECT FROM collection c WHERE c.prop > 5

SELECT FROM collection c ORDER BY c.propSELECT FROM collection c ORDER BY c.prop
SpatialSpatial Range over /prop/?Range over /prop/? (or /) può essere usato per servire in modo efficiente le query seguenti:(or /) can be used to serve the following queries efficiently:

SELECT FROM collection cSELECT FROM collection c

WHERE ST_DISTANCE(c.prop, {"type": "Point", "coordinates": [0.0, 10.0]}) < 40WHERE ST_DISTANCE(c.prop, {"type": "Point", "coordinates": [0.0, 10.0]}) < 40

SELECT FROM collection c WHERE ST_WITHIN(c.prop, {"type": "Polygon", ... }) --con indicizzazione su punti abilitataSELECT FROM collection c WHERE ST_WITHIN(c.prop, {"type": "Polygon", ... }) --with indexing on points enabled

SELECT FROM collection c WHERE ST_WITHIN({"type": "Point", ... }, c.prop) --con indicizzazione su poligoni abilitataSELECT FROM collection c WHERE ST_WITHIN({"type": "Point", ... }, c.prop) --with indexing on polygons enabled

Per impostazione predefinita, viene restituito un errore per l'intervallo di query con operatori come > = Se è presente alcun indice di intervallo (di qualsiasi precisione) per segnalare che un'analisi potrebbero essere necessaria per soddisfare la query.By default, an error is returned for queries with range operators such as >= if there is no Range index (of any precision) to signal that a scan might be necessary to serve the query. Le query di intervallo possono essere eseguite senza un indice dell'intervallo utilizzando la x-ms-documentdb-enable-analisi intestazione nell'API REST o EnableScanInQuery richiesta opzione mediante .NET SDK.Range queries can be performed without a Range index by using the x-ms-documentdb-enable-scan header in the REST API or the EnableScanInQuery request option by using the .NET SDK. Se sono presenti i filtri nella query che Azure Cosmos DB è possibile utilizzare l'indice per filtrare i dati, non viene restituito alcun errore.If there are any other filters in the query that Azure Cosmos DB can use the index to filter against, no error is returned.

Le stesse regole sono valide per le query spaziali.The same rules apply for spatial queries. Per impostazione predefinita, viene restituito un errore per le query spaziali se non esiste alcun indice spaziale e non sono presenti altri filtri che possono essere serviti dall'indice.By default, an error is returned for spatial queries if there is no spatial index, and there are no other filters that can be served from the index. Può essere eseguite come un'analisi utilizzando x-ms-documentdb-enable-analisi o EnableScanInQuery.They can be performed as a scan by using x-ms-documentdb-enable-scan or EnableScanInQuery.

Precisione indiceIndex precision

È possibile utilizzare una precisione di indice per rendere i compromessi tra overhead archiviazione dell'indice e le prestazioni delle query.You can use index precision to make trade-offs between index storage overhead and query performance. Per i numeri, è consigliabile utilizzare la configurazione di precisione predefinito-1 (massimo).For numbers, we recommend using the default precision configuration of -1 (maximum). Poiché i numeri JSON di 8 byte, questa operazione equivale a una configurazione di 8 byte.Because numbers are 8 bytes in JSON, this is equivalent to a configuration of 8 bytes. Scelta di un valore inferiore per la precisione, ad esempio da 1 a 7, significa che i valori all'interno di alcuni intervalli di eseguire il mapping allo stesso indice voce.Choosing a lower value for precision, such as 1 through 7, means that values within some ranges map to the same index entry. Pertanto, si riduce lo spazio di archiviazione dell'indice, ma l'esecuzione di query potrebbe essere necessario elaborare più documenti.Therefore, you reduce index storage space, but query execution might have to process more documents. Di conseguenza, che consuma maggiore velocità effettiva in unità di richiesta.Consequently, it consumes more throughput in request units.

La configurazione di precisione dell'indice ha un'applicazione più pratica con gli intervalli di stringhe.Index precision configuration has more practical application with string ranges. Poiché le stringhe possono essere di qualsiasi lunghezza arbitraria, la scelta della precisione dell'indice potrebbe influenzare le prestazioni delle query di intervallo di stringa.Because strings can be any arbitrary length, the choice of the index precision might affect the performance of string range queries. Potrebbe influenzare anche la quantità di spazio di archiviazione dell'indice che ha richiesto.It also might affect the amount of index storage space that's required. Gli indici dell'intervallo di stringa possono essere configurati con 1 a 100 o -1 (massimo).String Range indexes can be configured with 1 through 100 or -1 (maximum). Se si desidera eseguire query ORDER BY per le proprietà della stringa, è necessario specificare una precisione pari a -1 per i percorsi corrispondenti.If you want to perform ORDER BY queries against string properties, you must specify a precision of -1 for the corresponding paths.

Gli indici spaziali utilizzano sempre la precisione di indice predefinita per tutti i tipi (punto LineString e poligono).Spatial indexes always use the default index precision for all types (Point, LineString, and Polygon). La precisione di indice predefinita per gli indici spaziali non può essere sottoposto a override.The default index precision for spatial indexes can't be overridden.

Nell'esempio seguente viene illustrato come aumentare la precisione per gli indici di intervallo in una raccolta mediante .NET SDK.The following example shows how to increase the precision for Range indexes in a collection by using the .NET SDK.

Creare una raccolta con una precisione di indice personalizzataCreate a collection with a custom index precision

var rangeDefault = new DocumentCollection { Id = "rangeCollection" };

// Override the default policy for strings to Range indexing and "max" (-1) precision
rangeDefault.IndexingPolicy = new IndexingPolicy(new RangeIndex(DataType.String) { Precision = -1 });

await client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("db"), rangeDefault);   

Nota

DB Cosmos Azure restituisce un errore quando una query utilizza ORDER BY, ma non dispone di un indice di intervallo rispetto al percorso della query con la massima precisione.Azure Cosmos DB returns an error when a query uses ORDER BY but doesn't have a Range index against the queried path with the maximum precision.

Analogamente, è possibile escludere completamente percorsi dall'indicizzazione.Similarly, you can completely exclude paths from indexing. Nell'esempio seguente viene illustrato come escludere un'intera sezione dei documenti (un sottoalbero) dall'indicizzazione mediante il * carattere jolly.The next example shows how to exclude an entire section of the documents (a subtree) from indexing by using the * wildcard operator.

var collection = new DocumentCollection { Id = "excludedPathCollection" };
collection.IndexingPolicy.IncludedPaths.Add(new IncludedPath { Path = "/*" });
collection.IndexingPolicy.ExcludedPaths.Add(new ExcludedPath { Path = "/nonIndexedContent/*" });

collection = await client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("db"), excluded);

Consente di partecipare e rifiutare esplicitamente l'indicizzazioneOpt in and opt out of indexing

È possibile specificare se la raccolta deve indicizzare automaticamente tutti i documenti.You can choose whether you want the collection to automatically index all documents. Per impostazione predefinita, tutti i documenti vengono indicizzati automaticamente, ma è possibile disattivare l'indicizzazione automatica.By default, all documents are automatically indexed, but you can turn off automatic indexing. Quando l'indicizzazione è disattivata, i documenti possono essere accessibili solo tramite i relativi self link o dalle query utilizzando il documento ID.When indexing is turned off, documents can be accessed only through their self-links or by queries by using the document ID.

Con l'indicizzazione automatica disattivata, è comunque possibile aggiungere in modo selettivo solo documenti specifici all'indice.With automatic indexing turned off, you can still selectively add only specific documents to the index. Al contrario, è possibile lasciare l'indicizzazione in automatico e scegliere in modo selettivo escludere i documenti specifici.Conversely, you can leave automatic indexing on and selectively choose to exclude specific documents. L'indicizzazione o disattivare le configurazioni sono utili quando è presente solo un sottoinsieme di documenti che è necessario eseguire una query.Indexing on/off configurations are useful when you have only a subset of documents that needs to be queried.

L'esempio seguente viene illustrato come includere un documento in modo esplicito utilizzando il SQL API .NET SDK e RequestOptions.IndexingDirective proprietà.The following sample shows how to include a document explicitly by using the SQL API .NET SDK and the RequestOptions.IndexingDirective property.

// If you want to override the default collection behavior to either
// exclude (or include) a document in indexing,
// use the RequestOptions.IndexingDirective property.
client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"),
    new { id = "AndersenFamily", isRegistered = true },
    new RequestOptions { IndexingDirective = IndexingDirective.Include });

Modificare i criteri di indicizzazione di una raccoltaModify the indexing policy of a collection

Nel database Cosmos di Azure, è possibile apportare modifiche ai criteri di indicizzazione di una raccolta in tempo reale.In Azure Cosmos DB, you can make changes to the indexing policy of a collection on the fly. Una modifica nei criteri per una raccolta di Azure Cosmos DB di indicizzazione comportano una modifica nella forma dell'indice.A change in indexing policy on an Azure Cosmos DB collection can lead to a change in the shape of the index. La modifica interessa i percorsi che è possibile indicizzare, la precisione e il modello di coerenza dell'indice stesso.The change affects the paths that can be indexed, their precision, and the consistency model of the index itself. Una modifica nei criteri di indicizzazione in modo efficace richiede una trasformazione di indice precedente in un nuovo indice.A change in indexing policy effectively requires a transformation of the old index into a new index.

Trasformazioni di indice onlineOnline index transformations

Funzionamento dell'indicizzazione - Trasformazioni di indici online di Azure Cosmos DB

Trasformazioni di indice sono online.Index transformations are made online. Ciò significa che i documenti indicizzati per i criteri precedenti vengono trasformati in modo efficiente per il nuovo criterio senza influenzare la disponibilità di scrittura o la velocità effettiva provisioning della raccolta.This means that the documents indexed per the old policy are efficiently transformed per the new policy without affecting the write availability or the provisioned throughput of the collection. La coerenza di lettura e scrittura di operazioni eseguite tramite l'API REST, SDK, o dalla stored procedure e trigger non subiscono modifiche durante la trasformazione dell'indice.The consistency of read and write operations made by using the REST API, SDKs, or from within stored procedures and triggers is not affected during index transformation. Non è alcuna riduzione delle prestazioni o tempi di inattività per le app quando si esegue un criterio di indicizzazione di modifica.There's no performance degradation or downtime to your apps when you make an indexing policy change.

Tuttavia, durante la fase di trasformazione dell’indice, le query sono alla fine coerenti indipendentemente dalla configurazione della modalità indicizzazione (coerente o differita).However, during the time that index transformation is progress, queries are eventually consistent regardless of the indexing mode configuration (Consistent or Lazy). Questo vale anche per le query da tutte le interfacce: REST API, SDK e all'interno di stored procedure e trigger.This also applies to queries from all interfaces: REST API, SDKs, and from within stored procedures and triggers. Come con l'indicizzazione, Lazy indice trasformazione viene eseguita in modo asincrono in background alle repliche utilizzando le risorse di riserva che sono disponibili per una replica specifica.Just like with Lazy indexing, index transformation is performed asynchronously in the background on the replicas by using the spare resources that are available for a specific replica.

Trasformazioni di indice vengono eseguite anche sul posto.Index transformations are also made in place. DB Cosmos Azure non mantiene due copie dell'indice ed estrarre l'indice precedente con quello nuovo.Azure Cosmos DB doesn't maintain two copies of the index and swap out the old index with the new one. Ciò significa che nessun ulteriore spazio su disco richiesto o utilizzato in raccolte mentre si verificano trasformazioni di indice.This means that no additional disk space is required or consumed in your collections while index transformations occur.

Quando si modificano i criteri di indicizzazione, le modifiche vengono applicate per spostare dall'indice precedente nella nuova dipende principalmente le configurazioni di modalità di indicizzazione.When you change indexing policy, changes are applied to move from the old index to the new primarily based on the indexing mode configurations. Le configurazioni della modalità di indicizzazione svolgono un ruolo più grande di altri valori come percorsi inclusi o esclusi, i tipi di indice e precisione.Indexing mode configurations play a larger role than other values like included/excluded paths, index kinds, and precisions.

Se i criteri nuovi e precedenti Usa indicizzazione coerente, Azure Cosmos DB esegue una trasformazione di un indice online.If your old and new policies both use Consistent indexing, Azure Cosmos DB performs an online index transformation. Non è possibile applicare un'altra modifica criteri di indicizzazione con la modalità di indicizzazione coerente durante la trasformazione non è in corso.You can't apply another indexing policy change that has Consistent indexing mode while the transformation is in progress. Tuttavia, è possibile spostare in Lazy o nessuna modalità di indicizzazione durante una trasformazione è in corso:However, you can move to Lazy or None indexing mode while a transformation is in progress:

  • Quando si sposta in Lazy, la modifica di criteri di indice viene applicata immediatamente.When you move to Lazy, the index policy change is effective immediately. DB Cosmos Azure avvia ricreando l'indice in modo asincrono.Azure Cosmos DB starts re-creating the index asynchronously.
  • Quando si sposta su Nessuno, l'indice viene eliminato immediatamente.When you move to None, the index is dropped immediately. Nessuno spostamento è utile quando si desidera annullare una trasformazione in corso e iniziare con un criterio di indicizzazione diversi.Moving to None is useful when you want to cancel an in-progress transformation, and start fresh with a different indexing policy.

Frammento di codice seguente viene illustrato come modificare i criteri di indicizzazione di una raccolta dalla modalità di indicizzazione coerente per la modalità di indicizzazione Lazy.The following code snippet shows how to modify a collection's indexing policy from Consistent indexing mode to Lazy indexing mode. Se si utilizza .NET SDK, è possibile avviare una modifica dei criteri di indicizzazione utilizzando il nuovo ReplaceDocumentCollectionAsync metodo.If you’re using the .NET SDK, you can kick off an indexing policy change by using the new ReplaceDocumentCollectionAsync method.

Modificare i criteri di indicizzazione di consistenza per LazyModify indexing policy from Consistent to Lazy

// Switch to Lazy indexing mode.
Console.WriteLine("Changing from Default to Lazy IndexingMode.");

collection.IndexingPolicy.IndexingMode = IndexingMode.Lazy;

await client.ReplaceDocumentCollectionAsync(collection);

Tenere traccia dell'avanzamento della trasformazione di indiceTrack progress of index transformation

È possibile monitorare lo stato di percentuale della trasformazione di indice per un indice coerenza con il IndexTransformationProgress proprietà risposta da un ReadDocumentCollectionAsync chiamare.You can track the percentage progress of the index transformation to a Consistent index by using the IndexTransformationProgress response property from a ReadDocumentCollectionAsync call. Altri SDK e l'API REST supportano metodi e proprietà equivalenti per apportare modifiche ai criteri di indicizzazione.Other SDKs, and the REST API, support equivalent properties and methods for making indexing policy changes. È possibile controllare lo stato di avanzamento di una trasformazione di indice per un indice coerenza chiamando ReadDocumentCollectionAsync:You can check the progress of an index transformation to a Consistent index by calling ReadDocumentCollectionAsync:

long smallWaitTimeMilliseconds = 1000;
long progress = 0;

while (progress < 100)
{
    ResourceResponse<DocumentCollection> collectionReadResponse = await client.ReadDocumentCollectionAsync(
        UriFactory.CreateDocumentCollectionUri("db", "coll"));

    progress = collectionReadResponse.IndexTransformationProgress;

    await Task.Delay(TimeSpan.FromMilliseconds(smallWaitTimeMilliseconds));
}

Nota

  • Il IndexTransformationProgress proprietà è applicabile solo quando la trasformazione in un indice coerenza.The IndexTransformationProgress property is applicable only when transforming to a Consistent index. Utilizzare il ResourceResponse.LazyIndexingProgress proprietà per tenere traccia delle trasformazioni in un indice Lazy.Use the ResourceResponse.LazyIndexingProgress property for tracking transformations to a Lazy index.
  • Il IndexTransformationProgress e LazyIndexingProgress le proprietà vengono popolate solo per una raccolta non è partizionata, vale a dire una raccolta che viene creata senza una chiave di partizione.The IndexTransformationProgress and the LazyIndexingProgress properties are populated only for a non-partitioned collection, that is, a collection that is created without a partition key.

È possibile eliminare l'indice per una raccolta passando alla modalità di indicizzazione nessuna.You can drop the index for a collection by moving to the None indexing mode. Potrebbe trattarsi di un utile strumento operativo se si desidera annullare una trasformazione in corso e quindi avviare immediatamente uno nuovo.This might be a useful operational tool if you want to cancel an in-progress transformation, and then immediately start a new one.

Eliminare l'indice per una raccoltaDrop the index for a collection

// Switch to Lazy indexing mode.
Console.WriteLine("Dropping index by changing to to the None IndexingMode.");

collection.IndexingPolicy.IndexingMode = IndexingMode.None;

await client.ReplaceDocumentCollectionAsync(collection);

Quando è necessario apportare modifiche ai criteri di indicizzazione per le raccolte di Azure Cosmos DB?When would you make indexing policy changes to your Azure Cosmos DB collections? I seguenti casi rappresentano la maggior parte dei casi di utilizzo:The following are the most common use cases:

  • Fornire risultati coerenti durante il normale funzionamento, ma eseguire il fallback alla modalità di indicizzazione Lazy durante l'importazione di dati bulk.Serve consistent results during normal operation, but fall back to Lazy indexing mode during bulk data imports.
  • Iniziare a usare le nuove funzionalità di indicizzazione su raccolte DB Cosmos Azure corrente.Start using new indexing features on your current Azure Cosmos DB collections. Ad esempio, possibile utilizzare la query geospaziali, che richiede il tipo di indice spaziale, o ORDER BY / stringa di query di intervallo, che richiedono la stringa di tipo di intervallo di indice.For example, you can use geospatial querying, which requires the Spatial index kind, or ORDER BY/string range queries, which require the string Range index kind.
  • Selezionare manualmente le proprietà da indicizzare e modificarle nel tempo.Hand-select the properties to be indexed, and change them over time.
  • Ottimizzare l'indicizzazione di precisione per migliorare le prestazioni delle query o per ridurre spazio di archiviazione utilizzato.Tune indexing precision to improve query performance or to reduce storage consumed.

Nota

Per modificare i criteri di indicizzazione utilizzando ReplaceDocumentCollectionAsync, è necessario utilizzare versione 1.3.0 o versioni successive di .NET SDK.To modify indexing policy by using ReplaceDocumentCollectionAsync, you must use version 1.3.0 or a later version of the .NET SDK.

Per la trasformazione di indice per cui viene completata correttamente, verificare che sia sufficiente spazio di archiviazione disponibile per la raccolta.For index transformation to successfully finish, ensure that there is sufficient free storage space available on the collection. Se la raccolta raggiunge la quota di archiviazione, la trasformazione di indice è stato sospeso.If the collection reaches its storage quota, the index transformation is paused. Trasformazione indice riprende automaticamente quando lo spazio di archiviazione è disponibile, ad esempio, se si eliminano alcuni documenti.Index transformation automatically resumes when storage space is available, for example, if you delete some documents.

Ottimizzazione delle prestazioniPerformance tuning

Le API SQL forniscono informazioni sulle metriche delle prestazioni, ad esempio l'archiviazione dell'indice utilizzato e il costo di velocità effettiva (unità di richiesta) per ogni operazione.The SQL APIs provide information about performance metrics, such as the index storage used and the throughput cost (request units) for every operation. È possibile utilizzare queste informazioni per confrontare i vari criteri di indicizzazione e per l'ottimizzazione delle prestazioni.You can use this information to compare various indexing policies, and for performance tuning.

Per controllare la quota di archiviazione e l'utilizzo di una raccolta, eseguire una HEAD o ottenere richiesta nei confronti della risorsa della raccolta.To check the storage quota and usage of a collection, run a HEAD or GET request against the collection resource. Quindi, controllare il x-ms-richiesta di quota e x-ms-richiesta-usage intestazioni.Then, inspect the x-ms-request-quota and the x-ms-request-usage headers. In .NET SDK le proprietà DocumentSizeQuota e DocumentSizeUsage di ResourceResponse<T> contengono questi valori corrispondenti.In the .NET SDK, the DocumentSizeQuota and DocumentSizeUsage properties in ResourceResponse<T> contain these corresponding values.

 // Measure the document size usage (which includes the index size) against   
 // different policies.
 ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));  
 Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Per misurare l'overhead di indicizzazione in ogni operazione di scrittura (creare, aggiornare o eliminare), controllare il addebito x-ms-richiesta intestazione (o equivalente RequestCharge proprietà ResourceResponse < T> in .NET SDK) per misurare il numero di unità di richiesta vengono utilizzati da queste operazioni.To measure the overhead of indexing on each write operation (create, update, or delete), inspect the x-ms-request-charge header (or the equivalent RequestCharge property in ResourceResponse<T> in the .NET SDK) to measure the number of request units that are consumed by these operations.

 // Measure the performance (request units) of writes.     
 ResourceResponse<Document> response = await client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"), myDocument);              
 Console.WriteLine("Insert of document consumed {0} request units", response.RequestCharge);

 // Measure the performance (request units) of queries.    
 IDocumentQuery<dynamic> queryable =  client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri("db", "coll"), queryString).AsDocumentQuery();

 double totalRequestCharge = 0;
 while (queryable.HasMoreResults)
 {
    FeedResponse<dynamic> queryResponse = await queryable.ExecuteNextAsync<dynamic>(); 
    Console.WriteLine("Query batch consumed {0} request units",queryResponse.RequestCharge);
    totalRequestCharge += queryResponse.RequestCharge;
 }

 Console.WriteLine("Query consumed {0} request units in total", totalRequestCharge);

Modifiche per la specifica di criteri di indicizzazioneChanges to the indexing policy specification

7 luglio 2015, l'API REST versione 2015-06-03 è stata introdotta una modifica nello schema per criteri di indicizzazione.A change in the schema for indexing policy was introduced July 7, 2015, with REST API version 2015-06-03. Le relative classi nelle versioni SDK hanno nuove implementazioni per garantire la corrispondenza con lo schema.The corresponding classes in the SDK versions have new implementations to match the schema.

Nella specifica JSON sono state implementate le modifiche seguenti:The following changes were implemented in the JSON specification:

  • Criteri di indicizzazione supportano gli indici dell'intervallo per le stringhe.Indexing policy supports Range indexes for strings.
  • Ogni percorso può avere più definizioni di indice.Each path can have multiple index definitions. Ciò può avere uno per ogni tipo di dati.It can have one for each data type.
  • L'indicizzazione di precisione supporta 1 a 8 per i numeri, tra 1 e 100 per le stringhe e -1 (la precisione massima).Indexing precision supports 1 through 8 for numbers, 1 through 100 for strings, and -1 (maximum precision).
  • Segmenti di percorso non richiedono una virgoletta doppia per ogni percorso di escape.Path segments don't require a double quotation to escape each path. Ad esempio, è possibile aggiungere un percorso per /titolo /?For example, you can add a path for /title/? invece di / "title" /?.instead of /"title"/?.
  • Il percorso radice che rappresenta "tutti i percorsi" può essere rappresentato come / \* (oltre a / ).The root path that represents "all paths" can be represented as /\* (in addition to /).

Se si dispone di codice che esegue il provisioning di raccolte con un criterio di indicizzazione personalizzato scritto con versione 1.1.0 del SDK .NET o una versione precedente, per spostare in SDK versione 1.2.0, è necessario modificare il codice dell'applicazione per gestire queste modifiche.If you have code that provisions collections with a custom indexing policy written with version 1.1.0 of the .NET SDK or an earlier version, to move to SDK version 1.2.0, you must change your application code to handle these changes. Se non si dispone di codice che consente di configurare criteri di indicizzazione, o se si prevede di continuare a usare una versione precedente del SDK, non sono necessarie modifiche.If you don't have code that configures indexing policy, or if you plan to continue using an earlier version of the SDK, no changes are required.

Per un confronto pratico, ecco un esempio di un criterio di indicizzazione personalizzato scritto tramite API REST versione 2015-06-03, aggiungendo gli stessi criteri di indicizzazione scritto utilizzando l'API REST di precedente versione 2015-04-08.For a practical comparison, here's an example of a custom indexing policy written by using REST API version 2015-06-03, followed by the same indexing policy written by using the earlier REST API version 2015-04-08.

JSON (API REST versione 2015-06-03) di criteri di indicizzazione correnteCurrent indexing policy JSON (REST API version 2015-06-03)

{
   "automatic":true,
   "indexingMode":"Consistent",
   "includedPaths":[
      {
         "path":"/*",
         "indexes":[
            {
               "kind":"Hash",
               "dataType":"String",
               "precision":3
            },
            {
               "kind":"Hash",
               "dataType":"Number",
               "precision":7
            }
         ]
      }
   ],
   "ExcludedPaths":[
      {
         "path":"/nonIndexedContent/*"
      }
   ]
}

In precedenza l'indicizzazione JSON (API REST versione 2015-04-08) dei criteriEarlier indexing policy JSON (REST API version 2015-04-08)

{
   "automatic":true,
   "indexingMode":"Consistent",
   "IncludedPaths":[
      {
         "IndexType":"Hash",
         "Path":"/",
         "NumericPrecision":7,
         "StringPrecision":3
      }
   ],
   "ExcludedPaths":[
      "/\"nonIndexedContent\"/*"
   ]
}

Passaggi successiviNext steps

Per esempi di gestione criteri di indice e per altre informazioni sul linguaggio di query di database Cosmos di Azure, vedere i collegamenti seguenti:For index policy management samples and to learn more about the Azure Cosmos DB query language, see the following links: