Create index (API REST di Azure ricerca cognitiva)Create Index (Azure Cognitive Search REST API)

Un Indice è il mezzo principale per organizzare e cercare documenti in Azure ricerca cognitiva, in modo analogo a come una tabella organizza i record in un database.An index is the primary means of organizing and searching documents in Azure Cognitive Search, similar to how a table organizes records in a database. Ogni indice include una raccolta di documenti conformi allo schema dell'indice (nomi di campi, tipi di dati e attributi), ma gli indici specificano anche costrutti aggiuntivi (suggerimenti, profili di punteggio e configurazione CORS) che definiscono altri comportamenti di ricerca.Each index has a collection of documents that all conform to the index schema (field names, data types, and attributes), but indexes also specify additional constructs (suggesters, scoring profiles, and CORS configuration) that define other search behaviors.

È possibile utilizzare POST o PUT per la richiesta.You can use either POST or PUT on the request. Per uno dei due, il documento JSON nel corpo della richiesta fornisce la definizione dell'oggetto.For either one, the JSON document in the request body provides the object definition.

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

In alternativa, è possibile usare PUT e specificare il nome dell'indice nell'URI.Alternatively, you can use PUT and specify the index name on the URI.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

Per tutte le richieste del servizio, è necessario usare il protocollo HTTPS.HTTPS is required for all service requests. Se l'indice non esiste, viene creato.If the index doesn't exist, it is created. Se esiste già, viene aggiornato in base alla nuova definizione.If it already exists, it is updated to the new definition.

Con la creazione di un indice vengono definiti lo schema e i metadati.Creating an index establishes the schema and metadata. Il popolamento dell'indice è un'operazione separata.Populating the index is a separate operation. Per questo passaggio, è possibile usare un indicizzatore (vedere operazioni di indicizzatore (l'API REST di azure ricerca cognitiva), disponibile per le origini dati supportate) o aggiungere, aggiornare o eliminare documenti (API rest di Azure ricerca cognitiva).For this step, you can use an indexer (see Indexer operations (Azure Cognitive Search REST API), available for supported data sources) or an Add, Update or Delete Documents (Azure Cognitive Search REST API). L'indice invertito viene generato quando i documenti vengono pubblicati.The inverted index is generated when the documents are posted.

Nota

Il numero massimo di indici che è possibile creare varia in base al piano tariffario.The maximum number of indexes that you can create varies by pricing tier. Per altre informazioni, vedere limiti dei servizi per Azure ricerca cognitiva.For more information, see Service limits for Azure Cognitive Search.

Parametri dell'URIURI Parameters

ParametroParameter DescrizioneDescription
nome servizioservice name Obbligatorio.Required. Impostare questa impostazione sul nome univoco definito dall'utente del servizio di ricerca.Set this to the unique, user-defined name of your search service.
nome indiceindex name Obbligatorio sull'URI se si usa PUT.Required on the URI if using PUT. Il nome deve essere in lettere minuscole, iniziare con una lettera o un numero, non deve contenere barre o punti e deve essere composto da meno di 128 caratteri.The name must be lower case, start with a letter or number, have no slashes or dots, and be fewer than 128 characters. Dopo aver avviato il nome con una lettera o un numero, il resto del nome può includere qualsiasi lettera, numero e trattino, purché i trattini non siano consecutivi.After starting the name with a letter or number, the rest of the name can include any letter, number and dashes, as long as the dashes are not consecutive.
api-versionapi-version Obbligatorio.Required. La versione corrente è api-version=2020-06-30.The current version is api-version=2020-06-30. Per un elenco delle versioni disponibili, vedere versioni API in Azure ricerca cognitiva .See API versions in Azure Cognitive Search for a list of available versions.

Intestazioni richiestaRequest Headers

La tabella seguente descrive le intestazioni della richiesta obbligatorie e facoltative.The following table describes the required and optional request headers.

CampiFields DescrizioneDescription
Content-TypeContent-Type Obbligatorio.Required. Impostare il valore su application/jsonSet this to application/json
api-keyapi-key Obbligatorio.Required. La chiave API viene usata per autenticare la richiesta nel servizio di ricerca.The api-key is used to authenticate the request to your Search service. È un valore stringa univoco per il servizio.It is a string value, unique to your service. Le richieste di creazione devono includere un campo di chiave API impostato sulla chiave amministratore, anziché su una chiave di query.Create requests must include an api-key field set to your admin key (as opposed to a query key).

È possibile ottenere il valore della chiave API dal dashboard del servizio nel portale di Azure.You can get the api-key value from your service dashboard in the Azure portal. Per ulteriori informazioni, vedere Find existing Keys.For more information, see Find existing keys.

Corpo della richiestaRequest Body

Il corpo della richiesta contiene una definizione di schema che include l'elenco dei campi dati all'interno dei documenti che verranno inseriti nell'indice.The body of the request contains a schema definition, which includes the list of data fields within documents that will be fed into this index.

Il codice JSON seguente è una rappresentazione di alto livello delle parti principali della definizione.The following JSON is a high-level representation of the main parts of the definition.

{  
  "name": (optional on PUT; required on POST) "Name of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ] (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
    }
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

La richiesta contiene le proprietà seguenti:Request contains the following properties:

ProprietàProperty DescrizioneDescription
namename Obbligatorio.Required. Nome dell'indice.The name of the index. Un nome di indice deve contenere solo lettere minuscole, cifre o trattini, non può iniziare o terminare con trattini ed è limitato a 128 caratteri.An index name must only contain lowercase letters, digits or dashes, cannot start or end with dashes and is limited to 128 characters.
descriptiondescription Descrizione facoltativa.An optional description.
campifields Obbligatorio.Required. Un insieme di campi Hat verrà inserito in questo indice, inclusi il nome, il tipo di dati e gli attributi che definiscono le azioni consentite su tale campo.A collection of fields hat will be fed into this index, including name, data type, and attributes that define allowable actions on that field. I tipi di dati sono conformi al Entity Data Model (EDM).Data types conform to the Entity Data Model (EDM). Per ulteriori informazioni, vedere tipi di dati supportati.For more information, see Supported data types. Nella raccolta deve essere presente un campo specificato come campo chiave .There must be one field in the collection that is specified as the key field. e tale campo deve essere di tipo stringa.It has to be a string field. Questo campo rappresenta l'identificatore univoco, talvolta denominato ID documento, per ogni documento archiviato con l'indice.This field represents the unique identifier, sometimes called the document ID, for each document stored with the index.
somiglianzasimilarity facoltativo.Optional. Per i servizi creati prima del 15 luglio 2020, impostare questa proprietà in modo da usare l'algoritmo di classificazione BM25.For services created before July 15, 2020, set this property to use the BM25 ranking algorithm. I valori validi sono "#Microsoft.Azure.Search.ClassicSimilarity" o "#Microsoft.Azure.Search.BM25Similarity".Valid values include "#Microsoft.Azure.Search.ClassicSimilarity" or "#Microsoft.Azure.Search.BM25Similarity". Le versioni API che supportano questa proprietà includono 2020-06-30 e 2019-05-06-Preview.API versions that support this property include 2020-06-30 and 2019-05-06-Preview. Per altre informazioni, vedere algoritmi di classificazione in Azure ricerca cognitiva.For more information, see Ranking algorithms in Azure Cognitive Search.
Suggerimentosuggesters facoltativo.Optional. Usato per le query con completamento automatico o per i risultati di ricerca suggeriti, uno per indice.Used for autocompleted queries or suggested search results, one per index. Si tratta di una struttura di dati che archivia i prefissi per la corrispondenza in query parziali come il completamento automatico e i suggerimenti.It is a data structure that stores prefixes for matching on partial queries like autocomplete and suggestions. È costituito da un name e da campi compatibili con il suggerimento che forniscono contenuto per le query con completamento automatico e i risultati suggeriti.Consists of a name and suggester-aware fields that provide content for autocompleted queries and suggested results. searchMode è obbligatorio e sempre impostato su analyzingInfixMatching .searchMode is required, and always set to analyzingInfixMatching. Specifica che la corrispondenza verrà eseguita in qualsiasi termine nella stringa di query.It specifies that matching will occur on any term in the query string.
scoringProfilesscoringProfiles facoltativo.Optional. Usato per la classificazione personalizzata dei punteggi di ricerca.Used for custom search score ranking. Impostare defaultScoringProfile per usare un profilo personalizzato come predefinito, richiamato ogni volta che nella stringa di query non viene specificato un profilo personalizzato.Set defaultScoringProfile to use a custom profile as the default, invoked whenever a custom profile is not specified on the query string. Per altre informazioni sugli elementi, vedere aggiungere profili di punteggio a un indice di ricerca (API REST di Azure ricerca cognitiva) e l'esempio nella sezione successiva.For more information about elements, see Add scoring profiles to a search index (Azure Cognitive Search REST API) and the example in the next section.
analizzatori, charFilters, tokenizer, tokenFiltersanalyzers, charFilters, tokenizers, tokenFilters facoltativo.Optional. Usare per definire il modo in cui i documenti e le query vengono suddivisi in token indicizzabili/ricercabili.Use to define how your documents/queries are broken into indexable/searchable tokens. Per altre informazioni, vedere analizzatori per l'elaborazione del testo e aggiungere analizzatori di lingua ai campi di stringa.For more information, see Analyzers for text processing and Add language analyzers to string fields.
defaultScoringProfiledefaultScoringProfile facoltativo.Optional. Nome di un profilo di Punteggio personalizzato che sovrascrive i comportamenti di assegnazione dei punteggi predefiniti.Name of a custom scoring profile that overwrites the default scoring behaviors.
corsOptionscorsOptions facoltativo.Optional. Usato per consentire query tra origini per l'indice.Used to allow cross-origin queries against your index. La corsOptions sezione include:The corsOptions section includes:

allowedOrigins Necessaria Elenco delimitato da virgole di origini a cui verrà concesso l'accesso all'indice, in cui ogni origine è in genere nel formato protocol:// <fully-qualified-domain-name> : <port> (sebbene <port> venga spesso omesso).allowedOrigins (Required) A comma-delimited list of origins that will be granted access to your index, where each origin is typically of the form protocol://<fully-qualified-domain-name>:<port> (although the <port> is often omitted). Questo significa che al codice JavaScript servito da queste origini sarà consentito eseguire query sull'indice (presupponendo che venga fornito il valore api-key corretto).This means that any JavaScript code served from those origins will be allowed to query your index (assuming it provides the correct api-key). Se si vuole consentire l'accesso a tutte le origini, specificare * come singolo elemento nella allowedOrigins matrice.If you want to allow access to all origins, specify * as a single item in the allowedOrigins array. Questa operazione non è consigliata per l'ambiente di produzione, ma può essere utile per lo sviluppo o il debug.This is not recommended for production, but might be useful for development or debugging.

maxAgeInSeconds Opzionale I browser usano questo valore per determinare la durata (in secondi) di memorizzazione nella cache delle risposte preliminari CORS.maxAgeInSeconds (Optional) Browsers use this value to determine the duration (in seconds) to cache CORS preflight responses. Questo valore deve essere un intero non negativo.This must be a non-negative integer. A un valore più grande corrispondono prestazioni migliori, ma deve trascorrere più tempo prima che le modifiche dei criteri CORS diventino effettive.The larger this value is, the better performance will be, but the longer it will take for CORS policy changes to take effect. Se questo valore non è impostato, viene usata una durata predefinita di 5 minuti.If it is not set, a default duration of 5 minutes will be used.
encryptionKeyencryptionKey facoltativo.Optional. Consente di crittografare una mappa di sinonimi, con chiavi personalizzate, gestite nel Azure Key Vault.Used to encrypt a synonym map, with your own keys, managed in your Azure Key Vault. Disponibile per i servizi di ricerca fatturabili creati il o dopo il 2019-01-01.Available for billable search services created on or after 2019-01-01.

Una encryptionKey sezione contiene un oggetto definito dall'utente keyVaultKeyName (obbligatorio), un sistema keyVaultKeyVersion (obbligatorio) e un oggetto che keyVaultUri fornisce la chiave (obbligatorio, noto anche come nome DNS).An encryptionKey section contains a user-defined keyVaultKeyName (required), a system-generated keyVaultKeyVersion (required), and a keyVaultUri providing the key (required, also referred to as DNS name). Un URI di esempio potrebbe essere " https://my-keyvault-name.vault.azure.net ".An example URI might be "https://my-keyvault-name.vault.azure.net".

Facoltativamente, è possibile specificare accessCredentials se non si utilizza un'identità del sistema gestito.Optionally, you can specify accessCredentials if you are not using a managed system identity. Le proprietà di accessCredentials includono applicationId (Azure Active Directory ID applicazione a cui sono state concesse le autorizzazioni di accesso al Azure Key Vault specificato) e applicationSecret (chiave di autenticazione dell'applicazione Azure ad specificata).Properties of accessCredentials include applicationId (Azure Active Directory Application ID that was granted access permissions to your specified Azure Key Vault), and applicationSecret (authentication key of the specified Azure AD application). Nella sezione successiva viene illustrato un esempio di sintassi.An example in the next section illustrates the syntax.

Definizioni dei campi Field definitions

Quando si crea un indice, è possibile impostare gli attributi seguenti in un campo.The following attributes can be set on a field when creating an index.

AttributoAttribute DescrizioneDescription
namename Obbligatorio.Required. Imposta il nome del campo, che deve essere univoco all'interno della raccolta Fields del campo index o Parent.Sets the name of the field, which must be unique within the fields collection of the index or parent field.
tipotype Obbligatorio.Required. Imposta il tipo di dati per il campo.Sets the data type for the field. I campi possono essere semplici o complessi.Fields can be simple or complex. I campi semplici sono di tipo primitivo, Edm.String ad esempio per testo o Edm.Int32 per numeri interi.Simple fields are of primitive types, like Edm.String for text or Edm.Int32 for integers. I campi complessi possono avere sottocampi che sono semplici o complessi.Complex fields can have sub-fields that are themselves either simple or complex. Ciò consente di modellare oggetti e matrici di oggetti, che a sua volta consente di caricare la maggior parte delle strutture di oggetti JSON nell'indice.This allows you to model objects and arrays of objects, which in turn enables you to upload most JSON object structures to your index. Per l'elenco completo dei tipi supportati, vedere tipi di dati supportati ()ricerca cognitiva di Azure .See Supported data types (Azure Cognitive Search) for the complete list of supported types.
keykey Obbligatorio.Required. Impostare questo attributo su true per indicare che i valori di un campo identificano in modo univoco i documenti nell'indice.Set this attribute to true to designate that a field's values uniquely identify documents in the index. La lunghezza massima dei valori in un campo chiave è di 1024 caratteri.The maximum length of values in a key field is 1024 characters. È necessario scegliere esattamente un campo di primo livello in ogni indice come campo chiave e deve essere di tipo Edm.String .Exactly one top-level field in each index must be chosen as the key field and it must be of type Edm.String. Il valore predefinito è false per i campi semplici e null per i campi complessi.Default is false for simple fields and null for complex fields.

I campi chiave possono essere usati per cercare direttamente i documenti e aggiornare o eliminare documenti specifici.Key fields can be used to look up documents directly and update or delete specific documents. Per informazioni dettagliate, vedere il documento di ricerca (API REST di azure ricerca cognitiva) e aggiungere, aggiornare o eliminare documenti (API rest di Azure ricerca cognitiva ).See Lookup Document (Azure Cognitive Search REST API) and Add, Update or Delete Documents (Azure Cognitive Search REST API) for details.
recuperabileretrievable Indica se il campo può essere restituito in un risultato di ricerca.Indicates whether the field can be returned in a search result. Impostare questo attributo su false se si vuole usare un campo (ad esempio, Margin) come meccanismo di filtro, ordinamento o punteggio ma si preferisce che il campo non sia visibile all'utente finale.Set this attribute to false if you want to use a field (for example, margin) as a filter, sorting, or scoring mechanism but do not want the field to be visible to the end user. Questo attributo deve essere true per i campi chiave e deve essere null per campi complessi.This attribute must be true for key fields, and it must be null for complex fields. Questo attributo può essere modificato nei campi esistenti.This attribute can be changed on existing fields. L'impostazione del recupero su true non comporta un aumento dei requisiti di archiviazione dell'indice.Setting retrievable to true does not cause any increase in index storage requirements. Il valore predefinito è true per i campi semplici e null per i campi complessi.Default is true for simple fields and null for complex fields.
ricercabilesearchable Indica se il campo è ricercabile full-text ed è possibile farvi riferimento nelle query di ricerca.Indicates whether the field is full-text searchable and can be referenced in search queries. Ciò significa che verrà sottoposta ad analisi lessicale come la suddivisione in parole durante l'indicizzazione.This means it will undergo lexical analysis such as word-breaking during indexing. Se si imposta un campo ricercabile su un valore come "Sunny Day", internamente verrà normalizzato e diviso nei singoli token " Sunny " e " Day " .If you set a searchable field to a value like "Sunny day", internally it will be normalized and split into the individual tokens "sunny" and "day". È così possibile eseguire ricerche full-text di questi termini.This enables full-text searches for these terms. Edm.String Collection(Edm.String) Per impostazione predefinita, i campi di tipo o sono disponibili per la ricerca.Fields of type Edm.String or Collection(Edm.String) are searchable by default. Questo attributo deve essere false per campi semplici di altri tipi di dati non stringa e deve essere null per campi complessi.This attribute must be false for simple fields of other non-string data types, and it must be null for complex fields.

Un campo ricercabile utilizza spazio aggiuntivo nell'indice poiché Azure ricerca cognitiva elaborerà il contenuto di tali campi e li organizzerà in strutture di dati ausiliarie per la ricerca più efficiente.A searchable field consumes extra space in your index since Azure Cognitive Search will process the contents of those fields and organize them in auxiliary data structures for performant searching. Se si vuole risparmiare spazio nell'indice e non è necessario includere un campo nelle ricerche, impostare ricercabile su false .If you want to save space in your index and you don't need a field to be included in searches, set searchable to false. Per informazioni dettagliate, vedere funzionamento della ricerca full-text in Azure ricerca cognitiva .See How full-text search works in Azure Cognitive Search for details.
filterablefilterable Indica se abilitare il campo a cui fare riferimento nelle $filter query.Indicates whether to enable the field to be referenced in $filter queries. Il filtro è diverso da quello di cui è possibile eseguire ricerche nel modo in cui vengono gestite le stringhe.Filterable differs from searchable in how strings are handled. I campi di tipo Edm.String o Collection(Edm.String) che sono filtrabili non vengono sottoposti ad analisi lessicale, quindi i confronti sono solo per corrispondenze esatte.Fields of type Edm.String or Collection(Edm.String) that are filterable do not undergo lexical analysis, so comparisons are for exact matches only. Se, ad esempio, si imposta tale campo f su "Sunny Day", $filter=f eq 'sunny' non troverà corrispondenze, ma $filter=f eq 'Sunny day' sarà.For example, if you set such a field f to "Sunny day", $filter=f eq 'sunny' will find no matches, but $filter=f eq 'Sunny day' will. Questo attributo deve essere null per campi complessi.This attribute must be null for complex fields. Il valore predefinito è true per i campi semplici e null per i campi complessi.Default is true for simple fields and null for complex fields. Per ridurre le dimensioni degli indici, impostare questo attributo false su sui campi sui quali non verrà applicato il filtro.To reduce index size, set this attribute to false on fields that you won't be filtering on.
sortablesortable Indica se abilitare il campo a cui fare riferimento nelle $orderby espressioni.Indicates whether to enable the field to be referenced in $orderby expressions. Per impostazione predefinita, Azure ricerca cognitiva Ordina i risultati in base al punteggio, ma in molti casi gli utenti vorranno eseguire l'ordinamento in base ai campi nei documenti.By default Azure Cognitive Search sorts results by score, but in many experiences users will want to sort by fields in the documents. Un campo semplice può essere ordinabile solo se è a valore singolo (presenta un solo valore nell'ambito del documento padre).A simple field can be sortable only if it is single-valued (it has a single value in the scope of the parent document).

I campi di raccolta semplici non possono essere ordinabili, perché sono multivalore.Simple collection fields cannot be sortable, since they are multi-valued. Anche i sottocampi semplici delle raccolte complesse sono multivalore e pertanto non possono essere ordinabili.Simple sub-fields of complex collections are also multi-valued, and therefore cannot be sortable. Questo è vero se è un campo padre immediato o un campo predecessore, ovvero la raccolta complessa.This is true whether it's an immediate parent field, or an ancestor field, that's the complex collection. I campi complessi non possono essere ordinabili e l'attributo ordinabile deve essere null per tali campi.Complex fields cannot be sortable and the sortable attribute must be null for such fields. Il valore predefinito per l'oggetto ordinabile è per i campi true semplici a valore singolo, false per i campi semplici multivalore e null per i campi complessi.The default for sortable is true for single-valued simple fields, false for multi-valued simple fields, and null for complex fields.
facetablefacetable Indica se abilitare il campo a cui fare riferimento nelle query facet.Indicates whether to enable the field to be referenced in facet queries. Usato in genere in una presentazione dei risultati di ricerca che include il numero di passaggi per categoria (ad esempio, cercare fotocamere digitali e vedere i riscontri per marchio, per megapixel, per prezzo e così via).Typically used in a presentation of search results that includes hit count by category (for example, search for digital cameras and see hits by brand, by megapixels, by price, and so on). Questo attributo deve essere null per campi complessi.This attribute must be null for complex fields. I campi di tipo Edm.GeographyPoint o Collection(Edm.GeographyPoint) non possono essere facet.Fields of type Edm.GeographyPoint or Collection(Edm.GeographyPoint) cannot be facetable. Il valore predefinito è true per tutti gli altri campi semplici.Default is true for all other simple fields. Per ridurre le dimensioni degli indici, impostare questo attributo false su sui campi su cui non si desidera eseguire il facet.To reduce index size, set this attribute to false on fields that you won't be faceting on.
Analyzeranalyzer Imposta l'analizzatore lessicale per le operazioni di indicizzazione e query.Sets the lexical analyzer for both indexing and query operations. Il valore predefinito è standard.lucene.The default is standard.lucene. Per il set di valori consentito, vedere analizzatori per l'elaborazione del testo.For the allowed set of values, see Analyzers for text processing. Questo attributo può essere utilizzato solo con i campi disponibili per la ricerca e non può essere impostato insieme a searchAnalyzer o indexAnalyzer.This attribute can be used only with searchable fields, and it can't be set together with either searchAnalyzer or indexAnalyzer. Una volta scelto, l'analizzatore non può essere cambiato per il campo.Once the analyzer is chosen, it cannot be changed for the field. Deve essere null per campi complessi.Must be null for complex fields.
searchAnalyzersearchAnalyzer Impostare questa proprietà insieme a indexAnalyzer per specificare diversi analizzatori lessicali per l'indicizzazione e le query.Set this property in conjunction with indexAnalyzer to specify different lexical analyzers for indexing and queries. Se si utilizza questa proprietà, impostare analizzatore su e assicurarsi che null indexAnalyzer sia impostato su un valore consentito.If you use this property, set analyzer to null and make sure indexAnalyzer is set to an allowed value. Per il set di valori consentito, vedere analizzatori per l'elaborazione del testo.For the allowed set of values, see Analyzers for text processing. Questo attributo può essere utilizzato solo con i campi disponibili per la ricerca.This attribute can be used only with searchable fields. L'analizzatore di ricerca può essere aggiornato in un campo esistente perché viene usato solo in fase di query.The search analyzer can be updated on an existing field since it is only used at query-time. Deve essere null per campi complessi.Must be null for complex fields.
indexAnalyzerindexAnalyzer Impostare questa proprietà insieme a searchAnalyzer per specificare diversi analizzatori lessicali per l'indicizzazione e le query.Set this property in conjunction with searchAnalyzer to specify different lexical analyzers for indexing and queries. Se si utilizza questa proprietà, impostare analizzatore su e assicurarsi che null searchAnalyzer sia impostato su un valore consentito.If you use this property, set analyzer to null and make sure searchAnalyzer is set to an allowed value. Per il set di valori consentito, vedere analizzatori per l'elaborazione del testo.For the allowed set of values, see Analyzers for text processing. Questo attributo può essere utilizzato solo con i campi disponibili per la ricerca.This attribute can be used only with searchable fields. Una volta scelto index Analyzer, non è possibile modificarlo per il campo.Once the index analyzer is chosen, it cannot be changed for the field. Deve essere null per campi complessi.Must be null for complex fields.
synonymMapssynonymMaps Elenco dei nomi delle mappe di sinonimi da associare a questo campo.A list of the names of synonym maps to associate with this field. Questo attributo può essere utilizzato solo con i campi disponibili per la ricerca.This attribute can be used only with searchable fields. Attualmente è supportata solo una mappa di sinonimi per campo.Currently only one synonym map per field is supported. L'assegnazione di una mappa di sinonimi a un campo garantisce che i termini di query destinati a tale campo vengano espansi in fase di query usando le regole nella mappa dei sinonimi.Assigning a synonym map to a field ensures that query terms targeting that field are expanded at query-time using the rules in the synonym map. Questo attributo può essere modificato nei campi esistenti.This attribute can be changed on existing fields. Deve essere null o una raccolta vuota per i campi complessi.Must be null or an empty collection for complex fields.
fieldsfields Elenco di campi secondari se è un campo di tipo Edm.ComplexType o Collection(Edm.ComplexType) .A list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Deve essere null o vuoto per i campi semplici.Must be null or empty for simple fields. Per altre informazioni su come e quando usare i campi secondari, vedere come modellare tipi di dati complessi in Azure ricerca cognitiva .See How to model complex data types in Azure Cognitive Search for more information on how and when to use sub-fields.

Nota

I campi di tipo Edm.String filtrabile, ordinabile o con facet possono avere una lunghezza massima di 32 KB.Fields of type Edm.String that are filterable, sortable, or facetable can be at most 32 kilobytes in length. Ciò è dovuto al fatto che i valori di tali campi vengono considerati come un unico termine di ricerca e la lunghezza massima di un termine in ricerca cognitiva di Azure è 32 kilobyte.This is because values of such fields are treated as a single search term, and the maximum length of a term in Azure Cognitive Search is 32 kilobytes. Se è necessario archiviare più testo rispetto a questo in un singolo campo stringa, sarà necessario impostare in modo esplicito Filterable, ordinabile e facet su false nella definizione dell'indice.If you need to store more text than this in a single string field, you will need to explicitly set filterable, sortable, and facetable to false in your index definition.

L'impostazione di un campo come ricercabile, filtrabile, ordinabile o sfaccettabile influisca sulle prestazioni delle query e delle dimensioni degli indici.Setting a field as searchable, filterable, sortable, or facetable has an impact on index size and query performance. Non impostare questi attributi nei campi che non devono essere usati come riferimento nelle espressioni di query.Don't set those attributes on fields that are not meant to be referenced in query expressions.

Se un campo non è impostato per essere ricercabile, filtrabile, ordinabile o con facet, non è possibile fare riferimento al campo in alcuna espressione di query.If a field is not set to be searchable, filterable, sortable, or facetable, the field can't be referenced in any query expression. Questa operazione è utile per i campi che non vengono usati nelle query, ma sono necessari nei risultati della ricerca.This is useful for fields that are not used in queries, but are needed in search results.

Nota

Gli schemi di indice sono soggetti ai limiti seguenti (i valori variano a seconda dei diversi piani tariffari, vedere i limiti del servizio per Azure ricerca cognitiva per informazioni dettagliate):Index schemas are subject to the following limits (the values vary between different pricing tiers, see Service limits for Azure Cognitive Search for details.):

  • Numero massimo di campi semplici per indiceMaximum number of simple fields per index
  • Profondità massima dei sottocampi per indice (un campo di primo livello è alla profondità 1, un campo secondario di un campo di primo livello è alla profondità 2 e così via)Maximum depth of sub-fields per index (a top-level field is at depth 1, a sub-field of a top-level field is at depth 2, and so on)
  • Numero massimo di raccolte complesse per indiceMaximum number of complex collections per index
  • Numero massimo di elementi in tutte le raccolte complesse per documentoMaximum number of elements across all complex collections per document

RispostaResponse

In caso di richiesta eseguita correttamente, viene visualizzato il codice di stato "201 - Creato".For a successful request, you should see status code "201 Created".

Per impostazione predefinita, il corpo della risposta conterrà il codice JSON per la definizione di indice creata.By default, the response body will contain the JSON for the index definition that was created. Se tuttavia l'intestazione della richiesta Prefer è impostata su return=minimal, il corpo della risposta sarà vuoto e il codice di stato per l'esito positivo sarà "204 - Nessun contenuto" invece di "201 - Creato".However, if the Prefer request header is set to return=minimal, the response body will be empty, and the success status code will be "204 No Content" instead of "201 Created". Questo vale indipendentemente dal fatto che sia stato usato il metodo PUT o POST per creare l'indice.This is true regardless of whether PUT or POST is used to create the index.

EsempioExamples

Esempio: schema di indiceExample: An index schema

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer" }
        ]
    }
  ],
  "suggesters": [
      { "name": "sg", "searchMode": "analyzingInfixMatching", "sourceFields": ["HotelName"] }
  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ]
}  

Esempio: suggerimentiExample: Suggesters

 "suggesters": [  
   {  
     "name": "name of suggester",  
     "searchMode": "analyzingInfixMatching",  
     "sourceFields": ["field1", "field2", ...]  
   }  
 ]

A un Suggerimento viene fatto riferimento tramite il nome delle richieste di query che includono l' API suggerimenti o l' API di completamento automatico, a seconda che si desideri restituire una corrispondenza o il resto di un termine di query.A suggester is referenced by name on query requests that include either the Suggestions API or Autocomplete API, depending on whether you want to return a match or the remainder of a query term. Per altre informazioni sulla creazione e sull'uso di un suggerimento, vedere creare un suggerimento.For more information about creating and using a suggester, see Create a suggester.

Esempio: somiglianza per la pertinenza della ricercaExample: Similarity for search relevance

Questa proprietà imposta l'algoritmo di classificazione utilizzato per creare un punteggio di pertinenza nei risultati della ricerca di una query di ricerca full-text.This property sets the ranking algorithm used to create a relevance score in search results of a full text search query. Nei servizi creati dopo il 15 luglio 2020, questa proprietà viene ignorata perché l'algoritmo di somiglianza è sempre BM25.In services created after July 15, 2020, this property is ignored because the similarity algorithm is always BM25. Per i servizi esistenti creati prima del 15 luglio 2020, è possibile acconsentire esplicitamente a BM25 impostando questo costrutto come indicato di seguito:For existing services created before July 15, 2020, you can opt in to BM25 by setting this construct as follows:

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

Esempio: opzioni di CORSExample: CORS Options

JavaScript sul lato client non può chiamare API per impostazione predefinita perché il browser impedisce tutte le richieste con origini diverse.Client-side JavaScript cannot call any APIs by default since the browser will prevent all cross-origin requests. Per consentire query tra le origini all'indice, abilitare CORS (Cross-Origin Resource Sharing) impostando l' corsOptions attributo.To allow cross-origin queries to your index, enable CORS (Cross-origin resource sharing (Wikipedia)) by setting the corsOptions attribute. Per motivi di sicurezza, solo le API di query supportano CORS.For security reasons, only query APIs support CORS.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

Esempio: chiavi di crittografiaExample: Encryption keys

Le chiavi di crittografia sono chiavi gestite dal cliente usate per la crittografia aggiuntiva.Encryption keys are customer-managed keys used for additional encryption. Per altre informazioni, vedere crittografia con chiavi gestite dal cliente in Azure Key Vault.For more information, see Encryption using customer-managed keys in Azure Key Vault.

{
    "name": "hotels",  
    "fields": [ omitted for brevity],
    "suggesters": [ omitted for brevity  ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": (optional, only if not using managed system identity) {
        "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
        "applicationSecret": "Authentication key of the specified AAD application)"}
      }
} 

Esempio: profili di PunteggioExample: Scoring Profiles

Un profilo di punteggio è una sezione dello schema che definisce i comportamenti di Punteggio personalizzati che consentono di influenzare i documenti visualizzati più in alto nei risultati della ricerca.A scoring profile is a section of the schema that defines custom scoring behaviors that let you influence which documents appear higher in the search results. I profili di punteggio sono costituiti da funzioni e campi ponderati.Scoring profiles are made up of field weights and functions. Per utilizzarli, è necessario specificare il nome di un profilo nella stringa di query.To use them, you specify a profile by name on the query string. Per altre informazioni, vedere aggiungere profili di punteggio a un indice di ricerca (API REST di Azure ricerca cognitiva) per i dettagli.For more information, see Add scoring profiles to a search index (Azure Cognitive Search REST API) for details.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

Vedi ancheSee also