Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come importare documenti in un indice di ricerca predefinito usando le API REST, gli SDK di Azure o il portale di Azure.
Suggerimento
Per il percorso più rapido per il caricamento dei dati, usare la procedura guidata Importa dati nel portale di Azure, che crea un indice e lo carica in un unico flusso di lavoro.
Prerequisiti
Un servizio di Ricerca intelligenza artificiale di Azure (qualsiasi livello). Creare un servizio o trovarne uno esistente.
Indice di ricerca esistente. Questo articolo presuppone che sia già stato creato un indice. Se è necessario creare e caricare in un unico passaggio, usare l'importazione guidata o un indicizzatore.
Autorizzazioni per caricare i documenti:
- Autenticazione basata su chiave: chiave API amministratore per il servizio di ricerca.
- Autenticazione basata su ruoli: ruolo Collaboratore dati dell'indice di ricerca nel servizio di ricerca.
Per lo sviluppo di SDK, installare la libreria client di Ricerca di Azure:
- .NET: Azure.Search.Documents
- Python: azure-search-documents
- JavaScript: @azure/search-documents
- Java: azure-search-documents
Usare il portale di Azure
Nel portale di Azure usare l'importazione guidata per creare e caricare indici in un flusso di lavoro facile. Se si vuole caricare un indice esistente, scegliere un approccio alternativo.
Passare al servizio di ricerca nel portale di Azure.
Nella pagina Panoramica selezionare Importa dati sulla barra dei comandi per creare e popolare un indice di ricerca.
Per esaminare il flusso di lavoro, seguire questi link: Guida introduttiva: creare un indice di Azure AI Search e Avvio rapido: vettorializzazione integrata.
Al termine della procedura guidata, usare Esplora ricerche per verificare la presenza di risultati.
Suggerimento
La procedura guidata di importazione crea ed esegue indicizzatori. Se gli indicizzatori sono già definiti, è possibile ripristinare ed eseguire un indicizzatore dal portale di Azure, il che risulta utile se si stanno aggiungendo campi in modo incrementale. Il ripristino forza l'avvio dell'indicizzatore, raccogliendo tutti i campi da tutti i documenti di origine.
Usare le API REST
Documenti - Indice è l'API REST per l'importazione di dati in un indice di ricerca.
Il corpo della richiesta contiene uno o più documenti da indicizzare. I documenti vengono identificati in modo univoco tramite una chiave con distinzione tra maiuscole e minuscole. Ogni documento è associato a un'azione: "upload", "delete", "merge" o "mergeOrUpload". Le richieste di caricamento devono includere i dati del documento come set di coppie chiave/valore.
Le API REST sono utili per test iniziali di prototipo, in cui è possibile testare flussi di lavoro di indicizzazione senza dover scrivere molto codice. Il parametro @search.action determina se i documenti vengono aggiunti completamente o parzialmente, in termini di valori nuovi o sostitutivi per campi specifici.
Guida introduttiva: La ricerca full-text con REST illustra i passaggi. L'esempio seguente è una versione modificata dell'esempio. Il valore viene tagliato per brevità e il primo valore HotelId viene modificato per evitare di sovrascrivere un documento esistente.
Formulare una chiamata POST che specifica il nome dell'indice, l'endpoint "docs/index" e un corpo della richiesta che include il parametro
@search.action.POST https://[service name].search.windows.net/indexes/hotels-sample/docs/index?api-version=2025-09-01 Content-Type: application/json api-key: [admin key] { "value": [ { "@search.action": "upload", "HotelId": "1111", "HotelName": "Stay-Kay City Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", "Category": "Boutique", "Tags": [ "pool", "air conditioning", "concierge" ] }, { "@search.action": "mergeOrUpload", "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "This is description is replacing the original one for this hotel. New and changed values overwrite the previous ones. In a comma-delimited list like Tags, be sure to provide the full list because there is no merging of values within the field itself.", "Category": "Boutique", "Tags": [ "pool", "free wifi", "concierge", "my first new tag", "my second new tag" ] } ] }Impostare il parametro
@search.actionsuuploadper creare o sovrascrivere un documento. Impostarlo sumergeouploadOrMergese si desidera destinare gli aggiornamenti a campi specifici all'interno del documento. L'esempio precedente mostra entrambe le azioni.Azione Effetto upload Simile a un "upsert" in cui il documento viene inserito se nuovo e aggiornato o sostituito se esistente. Se il documento non contiene valori richiesti dall'indice, il valore del campo del documento viene impostato su Null. merge Aggiorna il documento già esistente e omette il documento che non può essere trovato. Unisci sostituisce i valori esistenti. Per questo motivo, assicurarsi di verificare la presenza di campi della raccolta che contengono più valori, ad esempio campi di tipo Collection(Edm.String). Ad esempio, se un campotagsinizia con un valore di["budget"]e si esegue Unisci con["economy", "pool"], il valore finale del campotagssarà["economy", "pool"]. Non è["budget", "economy", "pool"].mergeOrUpload Si comporta come Unisci se il documento esiste già e Carica se il documento è nuovo. Questa è l'azione più comune per gli aggiornamenti incrementali. delete Elimina rimuove il documento specificato dall'indice. Qualsiasi campo specificato in un'operazione di eliminazione, diverso dal campo chiave, viene ignorato. Se si vuole rimuovere un singolo campo da un documento, usare invece merge e impostare il campo su Null in modo esplicito. Per altre informazioni, vedere Eliminare documenti in un indice di ricerca. Non vi è alcuna garanzia di ordinamento circa quale azione nel corpo della richiesta venga eseguita per prima. Non è consigliabile avere più azioni di "unione" associate allo stesso documento in un singolo corpo della richiesta. Se sono necessarie più azioni di "unione" per lo stesso documento, eseguire l'unione lato client prima di aggiornare il documento nell'indice di ricerca.
Nelle raccolte primitive, se il documento contiene un campo Tag di tipo
Collection(Edm.String)con valore ["budget"], e si esegue un merge con un valore ["economy", "pool"] per Tag, il valore finale del campo Tags sarà ["economy", "pool"]. Non è ["budget", "economy", "pool"].Nelle raccolte complesse, se il documento contiene un campo di raccolta complesso denominato Rooms con valore [{ "Type": "Budget Room", "BaseRate": 75.0 }], e si esegue un merge con il valore [{ "Type": "Standard Room" }, { "Type": "Budget Room", "BaseRate": 60.5 }], il valore finale del campo Rooms sarà [{ "Type": "Standard Room" }, { "Type": "Budget Room", "BaseRate": 60.5 }]. Non sarà uno dei seguenti:
[{ "Type": "Budget Room", "BaseRate": 75.0 }, { "Type": "Standard Room" }, { "Type": "Budget Room", "BaseRate": 60.5 }] (aggiungi elementi)
[{ "Type": "Standard Room", "BaseRate": 75.0 }, { "Type": "Budget Room", "BaseRate": 60.5 }] (unire gli elementi in ordine, quindi aggiungere eventuali elementi aggiuntivi)
Annotazioni
Quando si caricano valori DateTimeOffset con informazioni sul fuso orario nell'indice, Ricerca di intelligenza artificiale di Azure normalizza questi valori in formato UTC. Ad esempio, 2025-01-13T14:03:00-08:00 verrà archiviato come 2025-01-13T22:03:00Z. Se è necessario archiviare le informazioni sul fuso orario, aggiungere una colonna aggiuntiva all'indice.
Inviare la richiesta.
Nella tabella seguente vengono illustrati i vari codici di stato per documento che possono essere restituiti nella risposta. Alcuni codici di stato indicano problemi con la richiesta stessa, mentre altri indicano condizioni di errore temporanee. Per queste ultime è necessario riprovare dopo un breve intervallo di tempo.
Codice di stato Meaning Non irreversibile Note 200 Il documento è stato modificato o eliminato correttamente. non disponibile Le operazioni di eliminazione sono idempotenti. Ovvero, anche se non esiste una chiave del documento nell'indice, il tentativo di un'operazione di eliminazione con tale chiave genera un codice di stato 200. 201 Il documento è stato creato correttamente. non disponibile 400 Si è verificato un errore nel documento che ne ha impedito l'indicizzazione. NO Il messaggio di errore nella risposta indica l'errore del documento. 404 Impossibile unire il documento perché la chiave specificata non esiste nell'indice. NO Questo errore non si verifica per i caricamenti perché creano nuovi documenti e non si verifica per le eliminazioni perché sono idempotent. 409 È stato rilevato un conflitto di versione nel tentativo di indicizzare un documento. Yes Ciò può verificarsi quando si prova a indicizzare lo stesso documento più di una volta contemporaneamente. 422 L'indice è temporaneamente non disponibile perché è stato aggiornato con il flag 'allowIndexDowntime' impostato su 'true'. Yes 429 Indica che è stata superata la quota per il numero di documenti per indice. NO È necessario creare un nuovo indice o aggiornare per limiti di capacità superiori. 503 Il servizio di ricerca è temporaneamente non disponibile, probabilmente a causa di un sovraccarico. Yes In questo caso, il codice deve attendere prima di riprovare o si rischia di prolungare la non disponibilità del servizio. Annotazioni
Se il codice del client riceve spesso una risposta 207, potrebbe ad esempio dipendere da un carico eccessivo del sistema. È possibile confermarlo controllando la
statusCodeproprietà per 503. In questo caso, è consigliabile limitare le richieste di indicizzazione. Se non si riduce il traffico di indicizzazione, è possibile che il sistema inizi a rifiutare tutte le richieste con errori 503.Cercare i documenti appena aggiunti come fase di convalida:
GET https://[service name].search.windows.net/indexes/hotel-sample-index/docs/1111?api-version=2025-09-01
Reference:Documents - Index, Documents - Get
Una richiesta di indice riuscita restituisce HTTP 200 (OK) per un batch in cui tutti i documenti hanno avuto esito positivo o HTTP 207 (multi-stato) se alcuni documenti non sono riusciti. Il corpo della risposta contiene lo stato per ogni documento:
{
"value": [
{ "key": "1111", "status": true, "statusCode": 201 },
{ "key": "2", "status": true, "statusCode": 200 }
]
}
Quando la chiave o l'ID del documento è nuova, null diventa il valore per qualsiasi campo non specificato nel documento. Per azioni su un documento esistente, i valori precedenti vengono sostituiti con valori aggiornati. Tutti i campi non specificati in un "merge" o "mergeUpload" rimangono intatti nell'indice di ricerca.
Usare gli Azure SDK
La programmabilità è disponibile negli SDK di Azure seguenti.
Azure SDK per Python fornisce le API seguenti per il caricamento di documenti semplice e in blocco in un indice:
Reference:SearchClient, IndexDocumentsBatch
Gli esempi di codice includono:
Assicurarsi di controllare il repository azure-search-vector-samples per campioni di codice che illustrano come indicizzare campi vettoriali.
Verificare il caricamento dei dati
Dopo il caricamento dei documenti, verificare che i dati siano indicizzati correttamente.
- Nel portale di Azure aprire la pagina Panoramica del servizio di ricerca.
- Selezionare Esplora ricerche dalla barra dei comandi.
- Nell'elenco a discesa selezionare l'indice.
- Selezionare Cerca per eseguire una query vuota che restituisce tutti i documenti.
- Verificare il numero di documenti e i valori dei campi di controllo spot.
Funzionamento dell'importazione dei dati
Un servizio di ricerca accetta documenti JSON conformi allo schema dell'indice. Un servizio di ricerca può importare e indicizzare contenuto di testo normale e contenuto vettoriale nei documenti JSON.
Il contenuto di testo normale viene recuperato dai campi nell'origine dati esterna, dalle proprietà dei metadati o dal contenuto arricchito generato da un set di competenze. Le competenze possono estrarre o dedurre descrizioni testuali da immagini e contenuti non strutturati.
Il contenuto vettoriale viene recuperato da un'origine dati che lo fornisce oppure viene creato da un set di competenze che implementa la vettorializzazione integrata in un carico di lavoro dell'indicizzatore della ricerca di intelligenza artificiale di Azure.
È possibile preparare manualmente questi documenti, ma se il contenuto si trova in un'origine dati supportata, l'esecuzione di un indicizzatore o l'uso dell'importazione guidata può automatizzare il recupero dei documenti, la serializzazione JSON e l'indicizzazione.
Una volta che l'indicizzazione dei dati è stata completata, le strutture dei dati fisici dell'indice vengono bloccate. Per materiale sussidiario che illustra cosa può e non può essere modificato, vedere Aggiornare e ricompilare un indice.
L'indicizzazione non è un processo in background. Un servizio di ricerca bilancia l'indicizzazione e i carichi di lavoro delle query, ma se la latenza delle query è troppo elevata, è possibile aggiungere capacità o identificare i periodi di attività di query bassa per il caricamento di un indice.
Per altre informazioni, vedere Strategie di importazione dei dati.
Risolvere gli errori comuni
| Errore | Motivo | Soluzione |
|---|---|---|
| HTTP 400 - Richiesta non valida | Il documento contiene dati non validi o campi obbligatori mancanti | Controllare il messaggio di errore per il campo specifico. Verificare che tutti i campi obbligatori siano presenti e che i tipi di dati corrispondano allo schema dell'indice. |
| HTTP 404 Pagina non trovata (merge) | Tentativo di unire un documento che non esiste | Utilizzare mergeOrUpload anziché merge se il documento potrebbe non esistere. |
| Conflitto HTTP 409 | Aggiornamenti simultanei allo stesso documento | Implementare la logica di ripetizione con backoff esponenziale. |
| HTTP 413 (Payload troppo grande) | Le dimensioni del batch superano i limiti | Ridurre il numero di documenti per batch. La dimensione massima del batch è 1.000 documenti o 16 MB. |
| HTTP 429 Troppe richieste | Quota superata | Controllare i limiti del livello di servizio. Prendere in considerazione l'aggiornamento o la creazione di un nuovo indice. |
| Servizio HTTP 503 non disponibile | Il servizio è sottoposto a un carico elevato | Implementare la logica di ripetizione con backoff esponenziale. Ridurre la frequenza delle richieste di indicizzazione. |