Share via


Planifier un indexeur dans Azure AI Search

Les indexeurs peuvent être configurés pour s’exécuter selon une planification lorsque vous définissez la schedule propriété. Voici des situations où la planification d’un indexeur est utile :

  • Les données sources changent au fur et à mesure, et vous souhaitez que l’indexeur traite automatiquement les différences.
  • Les données sources sont très volumineuses et vous avez besoin d’une planification périodique pour indexer tout le contenu.
  • Un index est rempli à partir de plusieurs sources, à l’aide de plusieurs indexeurs et vous souhaitez décaler les travaux pour réduire les conflits.

Lorsque l’indexation ne peut pas se terminer dans la fenêtre de traitement standard de 2 heures, vous pouvez planifier l’exécution de l’indexeur sur une cadence de 2 heures pour fonctionner via un grand volume de données. Tant que votre source de données prend en charge la logique de détection des modifications, les indexeurs peuvent récupérer automatiquement l’emplacement où ils se sont arrêtés à chaque exécution.

Une fois qu’un indexeur est sur une planification, il reste sur la planification jusqu’à ce que vous effacez l’intervalle ou l’heure de début, ou définissez disabled la valeur true. Quitter l’indexeur selon une planification lorsqu’il n’y a rien à traiter n’aura aucun impact sur les performances du système. La vérification du contenu modifié est une opération relativement rapide.

Prérequis

  • Indexeur valide configuré avec une source de données et un index.

  • Détection des modifications dans la source de données. Stockage Azure et SharePoint intègrent la détection des modifications. D’autres sources de données, telles qu’Azure SQL et Azure Cosmos DB doivent être activées manuellement.

Définition de planification

Une planification fait partie de la définition d’un indexeur. Si la schedule propriété est omise, l’indexeur s’exécute uniquement à la demande. La propriété comporte deux parties.

Propriété Description
« intervalle » (facultatif) Intervalle de temps s’écoulant entre le début de deux exécutions consécutives de l’indexeur. L’intervalle de temps le plus court autorisé est de 5 minutes, et le plus long de 1440 minutes (24 heures). Il doit être formaté en tant que valeur « dayTimeDuration » XSD (un sous-ensemble limité d'une valeur de durée ISO 8601 ).

Le modèle est le suivant : P(nD)(T(nH)(nM)).

Exemples : PT15M toutes les 15 minutes, PT2H toutes les deux heures.
« startTime » (facultatif) L’heure de début est spécifiée en heure UTC. En cas d’omission, l’heure actuelle est utilisée. Cette heure peut être passée, auquel cas la première exécution est planifiée comme si l’indexeur s’exécutait sans interruption depuis l’heure de début initiale.

L’exemple suivant est une planification qui démarre le 1er janvier à minuit et s’exécute toutes les deux heures.

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

Configurer une planification

Les planifications sont spécifiées dans une définition d’indexeur. Pour configurer une planification, vous pouvez utiliser le portail Azure, des API REST ou un SDK Azure.

  1. Connectez-vous au portail Azure et ouvrez la page du service de recherche.
  2. Dans le volet de navigation gauche, sélectionnez Indexeurs.
  3. Ouvrez un indexeur.
  4. Cliquez sur Paramètres.
  5. Faites défiler la liste jusqu’à Planifier, puis choisissez Toutes les heures, Tous les jours ou Personnalisé pour définir une date et une heure spécifiques ou un intervalle personnalisé.

Basculez vers l’onglet Json (Indexer Definition) en haut de l’index pour afficher la définition de planification au format XSD.

Comportement de planification

Pour l’indexation basée sur le texte, le planificateur peut lancer autant de travaux d’indexeur que le service de recherche en supporte, ce qui est déterminé par le nombre d’unités de recherche. Par exemple, si le service a trois réplicas et quatre partitions, vous pouvez avoir 12 travaux d’indexeur en exécution active, qu’ils soient lancés à la demande ou selon une planification.

Les indexeurs basés sur les compétences s’exécutent dans un environnement d’exécutiondifférent. Pour cette raison, le nombre d’unités de service n’a aucune incidence sur le nombre de tâches de l’indexeur basé sur les compétences que vous pouvez exécuter. Plusieurs indexeurs basés sur les compétences peuvent s’exécuter en parallèle, mais cela dépend de la disponibilité des nœuds au sein de l’environnement d’exécution.

Bien que plusieurs indexeurs puissent s’exécuter simultanément, un indexeur donné est une instance unique. Vous ne pouvez pas exécuter deux copies du même indexeur simultanément. Si un indexeur est toujours en cours d’exécution lorsque sa prochaine exécution planifiée doit commencer, l’exécution en attente est reportée jusqu’à l’occurrence planifiée suivante, ce qui permet au travail en cours de se terminer.

Pour être plus clair, prenons un exemple. Supposons que nous configurons une planification d’indexeur avec un intervalle horaire et une heure de début du 1er janvier 2024 à 8 :00 :00 UTC. Voici ce qui peut se produire lorsque l’exécution de l’indexeur prend plus d’une heure :

  • La première exécution de l’indexeur commence au 1er janvier 2024 à 18h00 UTC. Supposons que cette exécution prend 20 minutes (ou une durée inférieure à 1 heure).

  • La deuxième exécution commence au 1er janvier 2022 à 9h00 UTC. Supposons que cette exécution dure 70 minutes (plus d’une heure), et qu’elle ne se terminera pas avant 10h10 UTC.

  • La troisième exécution est planifiée pour démarrer à 10h00 UTC, mais à ce moment l’exécution précédente est toujours en cours. Cette exécution planifiée est donc ignorée. La prochaine exécution de l’indexeur ne va pas démarrer avant 11 h 00 UTC.

Remarque

Si un indexeur est défini sur une certaine planification, mais échoue à plusieurs reprises sur le même document à chaque fois, l’indexeur commence à s’exécuter sur un intervalle moins fréquent (jusqu’à l’intervalle maximal d’au moins une fois toutes les 2 heures ou 24 heures, selon différents facteurs d’implémentation) jusqu’à ce qu’il effectue à nouveau la progression. Si vous pensez que vous avez résolu le problème sous-jacent, vous pouvez exécuter l’indexeur manuellement et, si l’indexation réussit, l’indexeur va revenir à sa planification habituelle.

Étapes suivantes

Pour les indexeurs qui s’exécutent selon une planification, vous pouvez surveiller les opérations en extrayant l’état du service de recherche, ou obtenir des informations détaillées en activant la journalisation des ressources.