Superviser l’état et les résultats des indexeurs dans Azure AI Recherche

Vous pouvez superviser le traitement de l’indexeur dans le portail Azure ou programmatiquement par le biais d’appels REST ou d’un kit SDK Azure. Outre l’état de l’indexeur lui-même, vous pouvez consulter les heures de début et de fin, ainsi que les erreurs et avertissements détaillés d’une exécution spécifique.

Superviser à l’aide du portail Azure

L’état actuel de tous vos indexeurs se trouve dans la page Vue d’ensemble de votre service de recherche. Les pages du portail sont actualisées au bout de quelques minutes. Vous ne verrez donc pas immédiatement une nouvelle exécution de l’indexeur. Sélectionnez Actualiser en haut de la page pour récupérer immédiatement l’affichage le plus récent.

Indexers list

Statut Description
En cours Indique une exécution active. Le portail donne des informations partielles. À mesure que l’indexation progresse, vous pouvez observer que la valeur Documents ayant réussi augmente en conséquence. L’exécution des indexeurs qui traitent de grands volumes de données peut être longue. Par exemple, les indexeurs qui traitent des millions de documents sources peuvent s’exécuter pendant 24 heures, puis redémarrer presque immédiatement pour reprendre là où ils s’étaient arrêtés. Ainsi, les indexeurs traitant de grands volumes de données peuvent se trouver encore à l’état En cours dans le portail. Même lorsqu’un indexeur est en cours d’exécution, des informations détaillées sont disponibles sur la progression en cours et les exécutions précédentes.
Réussite Indique que l’exécution a réussi. Une exécution de l’indexeur peut réussir même si des documents individuels contiennent des erreurs, car le nombre d’erreurs est inférieur à la valeur du paramètre Nombre maximal d’éléments en échec de l’indexeur.
Échec Le nombre d’erreurs était supérieur à Nombre maximal d’éléments ayant échoué et l’indexation s’est arrêtée.
Réinitialiser L’état de suivi des modifications interne de l’indexeur a été réinitialisé. L’indexeur s’exécute entièrement, en actualisant tous les documents, et pas seulement ceux avec des horodatages plus récents.

Vous pouvez sélectionner un indexeur dans la liste pour afficher plus de détails sur les exécutions actuelles et récentes de l’indexeur.

Indexer summary and execution history

Le graphique Résumé de l’indexeur indique le nombre de documents traités lors des exécutions les plus récentes de l’indexeur.

La liste Détails de l’exécution affiche jusqu’à 50 des résultats d’exécution les plus récents. Sélectionnez un résultat d’exécution dans la liste pour afficher les détails correspondants. Cela inclut les heures de début et de fin, ainsi que les erreurs et les avertissements qui se sont produits.

Indexer execution details

Si vous rencontrez des problèmes spécifiques au document pendant l’exécution, ils sont signalés dans les champs Erreurs et Avertissements.

Indexer details with errors

Les avertissements sont courants avec certains types d’indexeurs et n’indiquent pas toujours un problème. Par exemple, les indexeurs qui utilisent Azure AI services peuvent signaler des avertissements lorsque les fichiers image ou PDF ne contiennent pas de texte à traiter.

Pour plus d’informations sur l’investigation des erreurs et des avertissements liés à l’indexeur, consultez les conseils d’aide sur la résolution des problèmes de l’indexeur.

Superviser avec des métriques Azure Monitor

Azure AI Recherche est une ressource supervisée dans Azure Monitor, ce qui signifie que vous pouvez utiliser Metrics Explorer pour voir les métriques de base sur le nombre de documents traités par l’indexeur et les appels de compétences. Ces métriques peuvent être utilisées pour superviser la progression de l’indexeur et configurer des alertes.

Les vues de métriques peuvent être filtrées ou fractionnées selon un ensemble de dimensions prédéfinies.

Nom de métrique Description Dimensions Exemples de cas d’utilisation
Nombre de documents traités Indique le nombre de documents traités par l’indexeur. Nom de la source de données, échec, nom de l’index, nom de l’indexeur, nom de l’ensemble de compétences
- Peut être référencé comme mesure approximative du débit (nombre de documents traités par l’indexeur dans le temps)
- Configurer pour alerter sur les documents en échec
Nombre d’appels d’exécution de compétences Indique le nombre d’appels de compétences. Nom de la source de données, échec, nom de l’index, nom de l’indexeur, nom de la compétence, type de compétence, nom de l’ensemble de compétences
- Référencer pour faire en sorte que les compétences soient appelées comme prévu en comparant les nombres d’appels relatifs entre les compétences et le nombre d’appels de compétences au nombre de documents.
- Configurer pour alerter sur les appels de compétences en échec

La capture d’écran suivante montre le nombre de documents traités par les indexeurs au sein d’un service sur une heure, divisés par nom d’indexeur.

Indexer documents processed metric

Vous pouvez aussi configurer le graphique pour afficher le nombre d’appels de compétences au cours du même intervalle (une heure).

Indexer skills invoked metric

Superviser avec Get Indexer Status (API REST)

Vous pouvez récupérer l’état et l’historique d’exécution d’un indexeur à l’aide de la commande Get Indexer Status :

GET https://[service name].search.windows.net/indexers/[indexer name]/status?api-version=2020-06-30
api-key: [Search service admin key]

La réponse contient l'état d'intégrité global de l'indexeur, le dernier appel de l'indexeur (ou celui en cours), ainsi que l'historique des appels récents de l'indexeur.

{
    "status":"running",
    "lastResult": {
        "status":"success",
        "errorMessage":null,
        "startTime":"2018-11-26T03:37:18.853Z",
        "endTime":"2018-11-26T03:37:19.012Z",
        "errors":[],
        "itemsProcessed":11,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
     },
    "executionHistory":[ {
        "status":"success",
         "errorMessage":null,
        "startTime":"2018-11-26T03:37:18.853Z",
        "endTime":"2018-11-26T03:37:19.012Z",
        "errors":[],
        "itemsProcessed":11,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
    }]
}

L’historique d’exécution contient les 50 exécutions les plus récentes, classées par ordre chronologique inverse (la plus récente en premier).

Notez qu’il existe deux valeurs d’état différentes. L’état de niveau supérieur s’applique à l’indexeur lui-même. Un état d’indexeur En cours signifie que l’indexeur est correctement configuré et disponible pour être exécuté mais qu’il n’est pas en cours d’exécution.

Chaque exécution de l’indexeur possède également un état qui indique si cette exécution spécifique est en cours d’exécution (running) ou déjà terminée avec l’état success, transientFailure ou persistentFailure.

Lorsque l’on réinitialise un indexeur pour actualiser son état de suivi des modifications, une entrée distincte indiquant l’état Réinitialiser est ajoutée à l’historique des exécutions.

Pour plus d’informations sur les codes d’état et les données de supervision de l’indexeur, consultez Get Indexer Status.

Superviser avec .NET

L’exemple C# suivant écrit des informations sur l’état d’un indexeur et les résultats de son exécution la plus récente (ou en cours) à la console.

static void CheckIndexerStatus(SearchIndexerClient indexerClient, SearchIndexer indexer)
{
    try
    {
        string indexerName = "hotels-sql-idxr";
        SearchIndexerStatus execInfo = indexerClient.GetIndexerStatus(indexerName);

        Console.WriteLine("Indexer has run {0} times.", execInfo.ExecutionHistory.Count);
        Console.WriteLine("Indexer Status: " + execInfo.Status.ToString());

        IndexerExecutionResult result = execInfo.LastResult;

        Console.WriteLine("Latest run");
        Console.WriteLine("Run Status: {0}", result.Status.ToString());
        Console.WriteLine("Total Documents: {0}, Failed: {1}", result.ItemCount, result.FailedItemCount);

        TimeSpan elapsed = result.EndTime.Value - result.StartTime.Value;
        Console.WriteLine("StartTime: {0:T}, EndTime: {1:T}, Elapsed: {2:t}", result.StartTime.Value, result.EndTime.Value, elapsed);

        string errorMsg = (result.ErrorMessage == null) ? "none" : result.ErrorMessage;
        Console.WriteLine("ErrorMessage: {0}", errorMsg);
        Console.WriteLine(" Document Errors: {0}, Warnings: {1}\n", result.Errors.Count, result.Warnings.Count);
    }
    catch (Exception e)
    {
        // Handle exception
    }
}

Sur la console, vous obtenez un résultat semblable à ceci :

Indexer has run 18 times.
Indexer Status: Running
Latest run
  Run Status: Success
  Total Documents: 7, Failed: 0
  StartTime: 11:29:31 PM, EndTime: 11:29:31 PM, Elapsed: 00:00:00.2560000
  ErrorMessage: none
  Document Errors: 0, Warnings: 0

Notez qu’il existe deux valeurs d’état différentes. L’état de niveau supérieur est l’état de l’indexeur lui-même. Un état d’indexeur En cours signifie que l’indexeur est correctement configuré et disponible pour être exécuté mais qu’il n’est pas en cours d’exécution.

Chaque exécution de l’indexeur possède également un état qui indique si cette exécution spécifique est en cours d’exécution (En cours) ou déjà terminée avec l’état Réussite ou TransientError.

Lorsque l’on réinitialise un indexeur pour actualiser son état de suivi des modifications, une entrée distincte indiquant l’état Réinitialiser est ajoutée à l’historique.

Étapes suivantes

Pour plus d’informations sur les codes d’état et les données de surveillance de l’indexeur, consultez la référence API suivante :