Importazione di dati in Azure AI Search
In Azure AI Search vengono eseguite query sul contenuto dell'utente che è stato caricato in un indice di ricerca. Questo articolo descrive i due flussi di lavoro di base per la compilazione in un indice: eseguire il push dei dati nell'indice a livello di codice o eseguire il pull nei dati usando un indicizzatore.
Entrambi gli approcci caricano documenti da un'origine dati esterna. Anche se è possibile creare un indice vuoto, non è possibile eseguire query fino a quando non si aggiunge il contenuto.
Nota
Se l'arricchimento tramite intelligenza artificiale o la vettorizzazione integrata è un requisito della soluzione, è necessario usare il modello pull (indicizzatori) per caricare un indice. I set di competenze sono collegati a indicizzatori e non vengono eseguiti in modo indipendente.
Push dei dati in un indice
Il modello push è un approccio che usa le API per caricare documenti in un indice di ricerca esistente. Si possono caricare i documenti individualmente o in batch fino a 1000 per batch, o 16 MB per batch, a seconda del limite che viene raggiunto per primo.
I vantaggi principali includono:
Non ha restrizioni per il tipo di origine dati. Il payload deve essere costituito da documenti JSON che eseguono il mapping allo schema di indice, ma i dati possono essere originati da qualsiasi posizione.
Non ha restrizioni per la frequenza di esecuzione. È possibile eseguire il push delle modifiche a un indice ogni volta che si vuole. Per applicazioni con requisiti di latenza bassa (ad esempio, quando l'indice deve essere sincronizzato con le fluttuazioni dell'inventario dei prodotti), il modello push è l'unica opzione disponibile.
La connettività e il recupero sicuro dei documenti sono completamente sotto il controllo dell'utente. Al contrario, le connessioni dell'indicizzatore vengono autenticate usando le funzionalità di sicurezza fornite in Azure AI Search.
Come eseguire il push dei dati a un indice di Azure AI Search
Per caricare uno o più documenti in un indice, usare le API seguenti:
- Documenti dell'indice (API REST)
- IndexDocumentsAsync (Azure SDK per .NET) o SearchIndexingBufferedSender
- IndexDocumentsBatch (Azure SDK per Python) o SearchIndexingBufferedSender
- IndexDocumentsBatch (Azure SDK per Java) o SearchIndexingBufferedSender
- IndexDocumentsBatch (Azure SDK per JavaScript o SearchIndexingBufferedSender)
Non è disponibile alcun supporto per il push dei dati tramite il portale di Azure.
Per un'introduzione alle API push, vedere:
- Avvio rapido: Ricerca full-text con gli SDK di Azure
- Esercitazione per C#: ottimizzare l'indicizzazione con l'API push
- Guida introduttiva REST: creare un indice di Azure AI Search con PowerShell
Azioni di indicizzazione: caricamento, unione, mergeOrUpload, eliminazione
È possibile controllare il tipo di azione di indicizzazione per ogni documento, specificando se il documento deve essere caricato completamente, unito al contenuto del documento esistente o eliminato.
Indipendentemente dal fatto che si usi l'API REST o Azure SDK, per l'importazione dei dati sono supportate le seguenti operazioni sul documento:
Carica, 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.
Unisci 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 campotags
inizia con un valore di["budget"]
e si esegue Unisci con["economy", "pool"]
, il valore finale del campotags
sarà["economy", "pool"]
. Non sarà["budget", "economy", "pool"]
.mergeOrUpload si comporta come Unisci se il documento esiste già e Carica se il documento è nuovo.
Elimina rimuove l'intero documento dall'indice. Per rimuovere un singolo campo, usare invece Unisci, impostando il campo in questione su Null.
Pull dei dati in un indice
Il modello pull usa gli indicizzatori collegati a un'origine dati supportata, caricando automaticamente i dati nell'indice. Gli indicizzatori di Microsoft sono disponibili per queste piattaforme:
- Archivio BLOB di Azure
- Archivio tabelle di Azure
- Azure Data Lake Storage Gen2
- File di Azure (anteprima)
- Azure Cosmos DB
- Database SQL di Azure, Istanza gestita di SQL e SQL Server in macchine virtuali di Azure
- File e collegamenti di OneLake
- SharePoint Online (anteprima)
È possibile usare connettori di terze parti, sviluppati e gestiti dai partner Microsoft. Per altre informazioni e collegamenti, vedere Raccolta origine dati.
Gli indicizzatori connettono un indice a un'origine dati, in genere una tabella, una vista o una struttura equivalente, e mappano i campi di origine ai campi equivalenti nell'indice. Durante l'esecuzione il set di righe viene automaticamente trasformato in JSON e caricato nell'indice specificato. Tutti gli indicizzatori supportano le pianificazioni, in modo da consentire di specificare la frequenza dell'aggiornamento dei dati. La maggior parte degli indicizzatori fornisce il rilevamento delle modifiche se l'origine dati lo supporta. Tramite il rilevamento di modifiche ed eliminazioni nei documenti esistenti, oltre al riconoscimento di nuovi documenti, gli indicizzatori eliminano la necessità di gestire attivamente i dati nell'indice.
Come eseguire il pull dei dati in un indice di Azure AI Search
Usare gli strumenti e le API seguenti per l'indicizzazione basata sugli indicizzatori:
- Procedura guidata di importazione dei dati o Procedura guidata di importazione e vettorizzazione dei dati
- API REST: Creare un indicizzatore (REST), Creare un'origine dati (REST), Creare un indice (REST)
- Azure SDK per .NET: SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
- Azure SDK per Python: SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
- Azure SDK per Java: SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
- Azure SDK per JavaScript: SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
La funzionalità di indicizzatore viene esposta nel [portale di Azure], nell'API REST e nell'SDK.NET.
Un vantaggio dell'uso del portale consiste nel fatto che Azure AI Search può solitamente generare automaticamente uno schema di indice predefinito leggendo i metadati del set di dati di origine.
Verificare l'importazione dei dati con Esplora ricerche
Un modo rapido per eseguire un controllo preliminare sul caricamento del documento consiste nell'usare Esplora ricerche nel portale.
Esplora ricerche consente di eseguire query su un indice senza che sia necessario scrivere codice. L'esperienza di ricerca è basata sulle impostazioni predefinite, ad esempio la sintassi semplice e il parametro di query searchMode predefinito. I risultati vengono restituiti in JSON, in modo che sia possibile esaminare l'intero documento.
Ecco una query di esempio che è possibile eseguire in Esplora ricerche nella visualizzazione JSON. "HotelId" è la chiave del documento di hotels-sample-index. Il filtro fornisce l'ID documento di un documento specifico:
{
"search": "*",
"filter": "HotelId eq '50'"
}
Se si usa REST, questa query Cerca raggiunge lo stesso scopo.