Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Note
Recherche Azure AI est disponible via le portail Azure, les API REST et les SDK Azure. Il sous-tend également Foundry IQ, la couche de connaissances managée qui transforme le contenu d’entreprise en bases de connaissances réutilisables et prenant en charge les autorisations pour les agents dans le portail Microsoft Foundry.
Important
Les fonctionnalités, capacités ou propriétés marquées (préversion) ne sont pas couvertes par un accord de niveau de service, ne sont pas recommandées pour les workloads de production et peuvent être modifiées ou faire l’objet de restrictions avant leur mise à disposition générale. Les Recherche Azure AI termes de la préversion s'appliquent à toutes les fonctionnalités d'aperçu, qu'il s'agisse d'une fonctionnalité autonome ou d'une partie d'une fonctionnalité généralement disponible.
Important
Ces fonctionnalités et fonctions prennent en charge les connexions à d’autres services Microsoft et services tiers. L’utilisation de ces services est soumise à leurs conditions respectives et peut entraîner le traitement ou le stockage des données en dehors de la limite de conformité Azure, ainsi que des données entrant dans la limite de conformité Azure.
Il est de votre responsabilité de gérer si vos données circulent en dehors des limites géographiques et de conformité de votre organisation, ainsi que des implications connexes, et que les autorisations, les limites et les approbations appropriées sont provisionnés.
Vous êtes responsable de l’examen et du test des applications que vous créez dans le contexte de vos cas d’usage spécifiques et de prendre toutes les décisions et personnalisations appropriées. Cela inclut l’implémentation de vos propres atténuations d’IA responsables, telles que les métaprompts, les filtres de contenu ou d’autres systèmes de sécurité, et la garantie que vos applications répondent aux normes de qualité, de fiabilité, de sécurité et de fiabilité appropriées. Pour plus d’informations, consultez la note de transparence Recherche Azure AI.
L’indexeur Azure Database pour MySQL (préversion) importe du contenu de Azure Database pour MySQL Serveur flexible dans un index Recherche Azure AI. Les entrées de l’indexeur sont des lignes d’une table ou d’une vue unique. La sortie est un index de recherche avec du contenu pouvant faire l’objet d’une recherche dans des champs individuels.
Cet article complète Créer un indexeur avec des informations spécifiques à l'indexation basée sur Azure Database pour MySQL Flexible Server. Il utilise les API REST pour illustrer un workflow en trois parties commune à tous les indexeurs : créer une source de données, créer un indexeur, créer un indexeur. L’extraction de données se produit lorsque vous envoyez la demande Create Indexer.
Lorsqu'il est configuré pour inclure un seuil maximal et une suppression douce, l'indexeur prend en compte toutes les modifications, les transferts et les suppressions pour votre base de données MySQL. Elle reflète ces modifications dans votre index de recherche. L’extraction de données se produit lorsque vous envoyez la demande Create Indexer.
Conditions préalables
Remplissez le formulaire d’inscription à l’aperçu de l’indexeur. L’inscription est automatiquement approuvée.
Serveur flexible Azure Database pour MySQL et exemples de données. Les données doivent résider dans une table ou une vue. Une clé primaire est requise. Si vous utilisez une vue, elle doit avoir une colonne de limite supérieure.
Autorisations de lecture. Une chaîne de connexion complète inclut une clé qui accorde l'accès au contenu, mais si vous utilisez des rôles Azure, vérifiez que l'identité managée du service de recherche dispose des autorisations de Lecteur sur MySQL.
Un client REST pour créer la source de données, l’index et l’indexeur.
Vous pouvez également utiliser le Kit de développement logiciel (SDK) Azure pour .NET. Vous ne pouvez pas utiliser le portail Azure pour la création d'indexeur, mais vous pouvez gérer les indexeurs et les sources de données une fois qu'ils sont créés.
Limitations de l'aperçu
Actuellement, le suivi des modifications et la détection de suppression ne fonctionnent pas si la date ou l’horodatage est uniforme pour toutes les lignes. Cette limitation est un problème connu qui doit être résolu dans une mise à jour de la version préliminaire. Tant que ce problème n’est pas résolu, n’ajoutez pas d’ensemble de compétences à l’indexeur MySQL.
L'aperçu ne prend pas en charge les types géométriques et les blobs.
Comme indiqué, il n’existe aucune prise en charge du portail pour la création d’indexeur, mais un indexeur MySQL et une source de données peuvent être gérés dans le portail Azure une fois qu’ils existent. Par exemple, vous pouvez modifier les définitions et réinitialiser, exécuter ou planifier l’indexeur.
Définir la source de données
La définition de la source de données spécifie les données à indexer, les informations d’identification et les stratégies pour identifier les modifications apportées aux données. La source de données est définie comme une ressource indépendante afin qu’elle puisse être utilisée par plusieurs indexeurs.
Créer ou mettre à jour la source de données spécifie la définition. Veillez à utiliser une API REST en préversion lors de la création de la source de données.
{
"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]"
}
}
Points clés :
Défini
typesur"mysql"(obligatoire).Définissez
credentialssur une chaîne de connexion ADO.NET. Vous trouverez des chaînes de connexion dans le portail Azure, sur la page Chaînes de connexion pour MySQL.Assigner
containerau nom de la table.Définissez
dataChangeDetectionPolicysi les données sont volatiles et que vous souhaitez que l’indexeur récupère uniquement les éléments nouveaux et mis à jour lors des exécutions suivantes.Définissez
dataDeletionDetectionPolicysi vous souhaitez supprimer des documents de recherche d’un index de recherche lorsque l’élément source est supprimé.
Note
Pour la propriété nom du conteneur, la valeur est limitée uniquement pour autoriser les lettres, les chiffres, les traits de soulignement (_), les points (.), les tirets simples (-) et les crochets ([])
Créer un index
Créer ou mettre à jour l’index spécifie le schéma d’index :
{
"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 }
]
}
Si la clé primaire de la table source correspond à la clé de document (dans ce cas, « ID »), l’indexeur importe la clé primaire comme clé de document.
Types de données de mappage
Le tableau suivant établit une correspondance entre la base de données MySQL et les équivalents dans Recherche Azure AI. Pour plus d’informations, consultez Types de données pris en charge (Recherche Azure AI).
Note
La version d'aperçu ne prend pas en charge les types géométriques et les objets blob.
| Types de données MySQL | types de champs Recherche Azure AI |
|---|---|
bool, boolean |
Edm.Booléen, Edm.String |
tinyint, , smallint, mediumintint, , 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, text, longtext, enum, set, time |
Edm.String |
| données numériques non signées, série, décimale, décimal, bit, blob, binaire, géométrie | N/A |
Configurer et exécuter l’indexeur MySQL
Une fois l’index et la source de données créés, vous êtes prêt à créer l’indexeur. La configuration de l’indexeur spécifie les entrées, les paramètres et les propriétés qui contrôlent les comportements de temps d’exécution.
Créez ou mettez à jour un indexeur en lui donnant un nom et en référençant la source de données et l’index cible :
{
"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
}
Points clés :
Spécifiez des mappages de champs s’il existe des différences dans le nom ou le type de champ, ou si vous avez besoin de plusieurs versions d’un champ source dans l’index de recherche.
Un indexeur s’exécute automatiquement lors de sa création. Vous pouvez l’empêcher de s’exécuter en définissant
disabledsurtrue. Pour contrôler l’exécution de l’indexeur, exécutez un indexeur à la demande ou placez-le selon une planification.
Vérifier l’état de l’indexeur
Envoyez une demande pour obtenir l'état de l'indexeur afin de surveiller l’exécution de l’indexeur :
GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]
La réponse inclut l’état et le nombre d’éléments traités. Il doit ressembler à l’exemple suivant :
{
"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
]
}
L’historique d’exécution contient jusqu’à 50 des dernières exécutions terminées, triées dans l’ordre chronologique inverse afin que la dernière exécution soit effectuée en premier.
Indexation de lignes nouvelles et modifiées
Une fois qu’un indexeur a rempli entièrement un index de recherche, vous pouvez souhaiter que l’indexeur suivant s’exécute de manière incrémentielle pour indexer uniquement les lignes nouvelles et modifiées de votre base de données.
Pour activer l’indexation incrémentielle, définissez la dataChangeDetectionPolicy propriété dans votre définition de source de données. Cette propriété indique à l’indexeur quel mécanisme de suivi des modifications est utilisé sur vos données.
Pour les indexeurs Azure Database pour MySQL, la seule stratégie prise en charge est la HighWaterMarkChangeDetectionPolicy.
La stratégie de détection des modifications d’un indexeur s’appuie sur la présence d’une colonne de jalon qui capture la version de ligne, ou la date et l’heure de la dernière mise à jour d’une ligne. Il s’agit souvent d’une colonne DATE, DATETIME ou TIMESTAMP avec un niveau de granularité suffisant pour répondre aux exigences d’une colonne de limite supérieure.
Dans votre base de données MySQL, la colonne de limite supérieure doit remplir les exigences suivantes :
- Toutes les insertions de données doivent spécifier une valeur pour la colonne.
- Toutes les mises à jour d’un élément modifient également la valeur de la colonne.
- La valeur de cette colonne augmente avec chaque insertion ou mise à jour.
- Les requêtes avec les clauses suivantes
WHEREORDER BYpeuvent être exécutées efficacement :WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]
L’exemple suivant montre une définition de source de données avec une stratégie de détection des modifications :
{
"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]"
}
}
Important
Si vous utilisez une vue, vous devez définir une stratégie de limite supérieure dans la source de données de votre indexeur.
Si la table source n’a pas d’index sur la colonne de point haut, les requêtes utilisées par l’indexeur MySQL peuvent échouer. En particulier, la clause ORDER BY [High Water Mark Column] a besoin d'un index pour une exécution efficace lorsque la table contient de nombreuses lignes.
Indexation des lignes supprimées
Lorsque des lignes sont supprimées de la table ou de la vue, vous souhaitez normalement supprimer ces lignes de l’index de recherche. Toutefois, si les lignes sont physiquement supprimées de la table, un indexeur n’a aucun moyen de déduire la présence d’enregistrements qui n’existent plus. La solution consiste à utiliser une technique de suppression réversible pour supprimer logiquement les lignes sans les supprimer de la table. Ajoutez une colonne à votre table ou affichez et marquez les lignes comme supprimées à l’aide de cette colonne.
Étant donné une colonne qui fournit l'état de suppression, un indexeur peut être configuré afin de supprimer tous les documents de recherche pour lesquels l'état de suppression est défini à true. La propriété de configuration qui prend en charge ce comportement est une stratégie de détection de suppression de données, qui est spécifiée dans la définition de source de données comme suit :
{
…,
"dataDeletionDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName" : "[a column name]",
"softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
}
}
Le softDeleteMarkerValue doit être une chaîne. Par exemple, si vous avez une colonne entière où les lignes supprimées sont marquées avec la valeur 1, utilisez "1". Si vous avez une colonne BIT dans laquelle les lignes supprimées sont marquées avec la valeur booléenne True, utilisez le littéral de chaîne True ou true (la casse est sans importance).
Étapes suivantes
Vous pouvez maintenant exécuter l’indexeur, surveiller l’état ou planifier l’exécution de l’indexeur. Les articles suivants s’appliquent aux indexeurs qui extrayent du contenu à partir de Azure MySQL :