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.
Nota
Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.
Importante
Le funzionalità, le funzionalità o le proprietà contrassegnate (anteprima) non sono coperte da un contratto di servizio, non sono consigliate per i carichi di lavoro di produzione e potrebbero cambiare o essere vincolate prima che diventino disponibili a livello generale. Le condizioni di anteprima Azure AI Search si applicano a tutte le funzionalità di anteprima, indipendente o parte di una funzionalità disponibile a livello generale.
Importante
Queste funzionalità e caratteristiche supportano la connessione ad altri servizi Microsoft e a servizi di terze parti. L'utilizzo di questi servizi è soggetto alle rispettive condizioni e potrebbe comportare l'elaborazione o l'archiviazione dei dati al di fuori del limite di conformità Azure, nonché il flusso dei dati nel limite di conformità Azure.
È tua responsabilità gestire l'eventuale trasferimento dei tuoi dati al di fuori dei confini di conformità e geografici della tua organizzazione e le relative implicazioni, nonché garantire che siano predisposte le autorizzazioni, i limiti e le approvazioni appropriati.
L'utente è responsabile di esaminare e testare attentamente le applicazioni compilate nel contesto dei casi d'uso specifici e di prendere tutte le decisioni e le personalizzazioni appropriate. Ciò include l'implementazione di mitigazioni di intelligenza artificiale responsabili, ad esempio metaprompt, filtri di contenuto o altri sistemi di sicurezza, e garantire che le applicazioni soddisfino gli standard di qualità, affidabilità, sicurezza e attendibilità appropriati. Per altre informazioni, vedere la nota sulla trasparenza Azure AI Search.
L'indicizzatore Database di Azure per MySQL (anteprima) importa il contenuto da Database di Azure per MySQL server flessibile in un indice Azure AI Search. Gli input per l'indicizzatore sono righe di una singola tabella o vista. L'output è un indice di ricerca con contenuto ricercabile in singoli campi.
Questo articolo integra Creare un indicizzatore con informazioni specifiche per l'indicizzazione da Azure Database per MySQL Flexible Server. Usa le API REST per illustrare un flusso di lavoro in tre parti comune a tutti gli indicizzatori: creare un'origine dati, creare un indice, creare un indicizzatore. L'estrazione dei dati si verifica quando si invia la richiesta Crea indicizzatore.
Quando configurata per includere un marcatore di livello massimo e l'eliminazione temporanea, l'indicizzatore esegue tutte le modifiche, i caricamenti e le eliminazioni nel database MySQL. Riflette queste modifiche nell'indice di ricerca. L'estrazione dei dati si verifica quando si invia la richiesta Crea indicizzatore.
Prerequisiti
Completare il modulo di registrazione dell'anteprima dell'indicizzatore. La registrazione viene approvata automaticamente.
Database di Azure per MySQL Flexible Server e dati di esempio. I dati devono trovarsi in una tabella o in una vista. È necessaria una chiave primaria. Se si utilizza una vista, deve contenere una colonna di livello massimo.
Autorizzazioni di lettura. Una stringa di connessione full access include una chiave che concede l'accesso al contenuto, ma se si utilizzano i ruoli di Azure, assicurarsi che l'identità gestita del servizio di ricerca abbia le autorizzazioni di Lettore su MySQL.
Client REST per creare l'origine dati, l'indice e l'indicizzatore.
È anche possibile usare il Azure SDK per .NET. Non è possibile usare il portale di Azure per la creazione dell'indicizzatore, ma è possibile gestire indicizzatori e origini dati dopo la creazione.
Limitazioni dell'anteprima
Attualmente, il rilevamento delle modifiche e l'eliminazione non funzionano se la data o il timestamp è uniforme per tutte le righe. Questa limitazione è un problema noto da risolvere in un aggiornamento dell'anteprima. Finché questo problema non viene risolto, non aggiungere un set di competenze all'indicizzatore MySQL.
L'anteprima non supporta tipi di geometria e blob.
Come indicato, non è disponibile alcun supporto del portale per la creazione dell'indicizzatore, ma un indicizzatore MySQL e un'origine dati possono essere gestiti nel portale di Azure una volta esistenti. Ad esempio, è possibile modificare le definizioni e reimpostare, eseguire o pianificare l'indicizzatore.
Definire l'origine dati
La definizione dell'origine dati specifica i dati da indicizzare, credenziali e criteri per identificare le modifiche nei dati. L'origine dati è definita come risorsa indipendente in modo che possa essere usata da più indicizzatori.
Crea o Aggiorna origine dati specifica la definizione. Assicurarsi di usare un'API REST di anteprima durante la creazione dell'origine dati.
{
"name" : "hotel-mysql-ds",
"description" : "[Description of MySQL data source]",
"type" : "mysql",
"credentials" : {
"connectionString" :
"Server=[MySQLServerName].MySQL.database.azure.com; Port=3306; Database=[DatabaseName]; Uid=[UserName]; Pwd=[Password]; SslMode=Preferred;"
},
"container" : {
"name" : "[TableName]"
},
"dataChangeDetectionPolicy" : {
"@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"highWaterMarkColumnName": "[HighWaterMarkColumn]"
}
}
Punti chiave:
Impostare
typesu"mysql"(obbligatorio).Impostare
credentialssu una stringa di connessione ADO.NET. Le stringhe di connessione sono disponibili nel portale di Azure, nella pagina Stringhe di connessione per MySQL.Imposta
containercome nome della tabella.Impostare
dataChangeDetectionPolicyse i dati sono volatili e si vuole che l'indicizzatore rilevi solo gli elementi nuovi e aggiornati nelle esecuzioni successive.Impostare
dataDeletionDetectionPolicyse si desidera rimuovere i documenti di ricerca da un indice di ricerca quando l'elemento di origine viene eliminato.
Nota
Per la proprietà nome contenitore, il valore è limitato solo a lettere, numeri, caratteri di sottolineatura (_), punti (.), trattini singoli (-) e parentesi quadre ([])
Creare un indice
Crea o Aggiorna indice specifica lo schema dell'indice:
{
"name" : "hotels-mysql-ix",
"fields": [
{ "name": "ID", "type": "Edm.String", "key": true, "searchable": false },
{ "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false },
{ "name": "Category", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true },
{ "name": "City", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true },
{ "name": "Description", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false }
]
}
Se la chiave primaria nella tabella di origine corrisponde alla chiave del documento (in questo caso "ID"), l'indicizzatore importa la chiave primaria come chiave del documento.
Mapping dei tipi di dati
La tabella seguente mappa il database MySQL agli equivalenti di Azure AI Search. Per altre informazioni, vedere Tipi di dati supportati (Azure AI Search).
Nota
L'anteprima non supporta tipi di geometria e blob.
| Tipi di dati MySQL | Tipi campo di ricerca di Azure AI |
|---|---|
bool, boolean |
Edm.Boolean, Edm.String |
tinyint, smallint, mediumint, int, integeryear |
Edm.Int32, Edm.Int64, Edm.String |
bigint |
Edm.Int64, Edm.String |
float, double, real |
Edm.Double, Edm.String |
date, datetime, timestamp |
Edm.DateTimeOffset, Edm.String |
char, varchar, tinytext, mediumtext, textlongtext, enum, , settime |
Edm.String |
| dati numerici senza segno, seriale, decimale, dec, bit, BLOB, binario, geometria | N/D |
Configurare ed eseguire l'indicizzatore MySQL
Dopo aver creato l'indice e l'origine dati, è possibile creare l'indicizzatore. La configurazione dell'indicizzatore specifica gli input, i parametri e le proprietà che controllano i comportamenti di runtime.
Creare o aggiornare un indicizzatore assegnando un nome e facendo riferimento all'origine dati e all'indice di destinazione:
{
"name" : "hotels-mysql-idxr",
"dataSourceName" : "hotels-mysql-ds",
"targetIndexName" : "hotels-mysql-ix",
"disabled": null,
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": null,
"maxFailedItemsPerBatch": null,
"base64EncodeKeys": null,
"configuration": { }
},
"fieldMappings" : [ ],
"encryptionKey": null
}
Punti chiave:
Specificare i mapping dei campi se sono presenti differenze nel nome o nel tipo di campo o se sono necessarie più versioni di un campo di origine nell'indice di ricerca.
Un indicizzatore viene eseguito automaticamente quando viene creato. È possibile impedirne l'esecuzione impostando
disabledsutrue. Per controllare l'esecuzione dell'indicizzatore, eseguire un indicizzatore su richiesta o inserirlo in una pianificazione.
Controllare lo stato dell'indicizzatore
Inviare una richiesta Get Indexer Status (Ottieni stato indicizzatore ) per monitorare l'esecuzione dell'indicizzatore:
GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]
La risposta include lo stato e il numero di elementi elaborati. Dovrebbe essere simile all'esempio seguente:
{
"status":"running",
"lastResult": {
"status":"success",
"errorMessage":null,
"startTime":"2024-02-21T00:23:24.957Z",
"endTime":"2024-02-21T00:36:47.752Z",
"errors":[],
"itemsProcessed":1599501,
"itemsFailed":0,
"initialTrackingState":null,
"finalTrackingState":null
},
"executionHistory":
[
{
"status":"success",
"errorMessage":null,
"startTime":"2024-02-21T00:23:24.957Z",
"endTime":"2024-02-21T00:36:47.752Z",
"errors":[],
"itemsProcessed":1599501,
"itemsFailed":0,
"initialTrackingState":null,
"finalTrackingState":null
},
... earlier history items
]
}
La cronologia di esecuzione contiene fino a 50 delle esecuzioni completate più di recente, ordinate in ordine cronologico inverso in modo che l'esecuzione più recente venga prima.
Indicizzazione di righe nuove e modificate
Dopo che un indicizzatore ha popolato completamente un indice di ricerca, potresti volere che le successive esecuzioni dell'indicizzatore indicizzino in modo incrementale solo le righe nuove e modificate nel database.
Per abilitare l'indicizzazione incrementale, impostare la proprietà dataChangeDetectionPolicy nella definizione della propria origine dati. Questa proprietà indica all'indicizzatore quale meccanismo di rilevamento delle modifiche viene usato sui dati.
Per gli indicizzatori di Database di Azure per MySQL, l'unico criterio supportato è il HighWaterMarkChangeDetectionPolicy.
I criteri di rilevamento delle modifiche di un indicizzatore si basano sulla presenza di una colonna con un high water mark che acquisisce la versione della riga o la data e l'ora dell'ultimo aggiornamento di una riga. Spesso si tratta di una DATE, DATETIME, o TIMESTAMP colonna con una granularità sufficiente per soddisfare i requisiti di una colonna di riferimento di soglia.
Nel database MySQL la colonna del limite massimo di utilizzo deve soddisfare i requisiti seguenti:
- Tutti gli inserimenti di dati devono specificare un valore per la colonna.
- Tutti gli aggiornamenti a un elemento modificano anche il valore della colonna.
- Il valore di questa colonna aumenta con ogni inserimento o aggiornamento.
- Le query con le seguenti clausole
WHEREeORDER BYpossono essere eseguite in modo efficiente:WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]
L'esempio seguente mostra una definizione di origine dati con un criterio di rilevamento delle modifiche:
{
"name" : "[Data source name]",
"type" : "mysql",
"credentials" : { "connectionString" : "[connection string]" },
"container" : { "name" : "[table or view name]" },
"dataChangeDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"highWaterMarkColumnName" : "[last_updated column name]"
}
}
Importante
Se stai usando una vista, è necessario impostare criteri di soglia alta nell'origine dati dell'indicizzatore.
Se la tabella di origine non dispone di un indice nella colonna del livello massimo, le query usate dall'indicizzatore MySQL potrebbero andare in timeout. In particolare, la clausola ORDER BY [High Water Mark Column] richiede un indice per l'esecuzione efficiente quando la tabella contiene molte righe.
Indicizzazione di righe eliminate
Quando le righe vengono eliminate dalla tabella o dalla vista, in genere si desidera eliminare anche tali righe dall'indice di ricerca. Tuttavia, se le righe vengono rimosse fisicamente dalla tabella, un indicizzatore non può dedurre la presenza di record che non esistono più. La soluzione consiste nell'usare una tecnica di eliminazione temporanea per eliminare logicamente le righe senza rimuoverle dalla tabella. Aggiungere una colonna alla tabella o alla vista e contrassegnare le righe come eliminate usando tale colonna.
Data una colonna che fornisce lo stato di eliminazione, un indicizzatore può essere configurato per rimuovere tutti i documenti di ricerca per cui lo stato di eliminazione è impostato su true. La proprietà di configurazione che supporta questo comportamento è un criterio di rilevamento dell'eliminazione dei dati, specificato nella definizione dell'origine dati come indicato di seguito:
{
…,
"dataDeletionDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName" : "[a column name]",
"softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
}
}
Deve softDeleteMarkerValue essere una stringa. Ad esempio, se si dispone di una colonna integer in cui le righe eliminate vengono contrassegnate con il valore 1, usare "1". Se si dispone di una BIT colonna in cui le righe eliminate vengono contrassegnate con il valore booleano true, usare la stringa letterale True o true (il caso non è rilevante).
Passaggi successivi
È ora possibile eseguire l'indicizzatore, monitorare lo stato o pianificare l'esecuzione dell'indicizzatore. Gli articoli seguenti si applicano agli indicizzatori che estraggono il contenuto da Azure MySQL: