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 propriété schedule
. 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
sur 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 propriété schedule
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.
- Connectez-vous au portail Azure et ouvrez la page du service de recherche.
- Dans le volet de navigation gauche, sélectionnez Indexeurs.
- Ouvrez un indexeur.
- Cliquez sur Paramètres.
- 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 Définition de l’indexeur (JSON) en haut de l’index pour afficher la définition de planification au format XSD.
FAQ sur le comportement de planification
Puis-je exécuter plusieurs travaux d’indexeur en parallèle ?
Vous pouvez exécuter plusieurs indexeurs en même temps, mais chaque indexeur est une instance unique. Vous ne pouvez pas exécuter deux copies du même indexeur simultanément.
Pour l’indexation basée sur le texte, le planificateur peut lancer autant de travaux d’indexeur que le service de recherche en prend en charge, 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.
Pour l’indexation basée sur les compétences, les indexeurs s’exécutent dans un environnement d’exécution spécifique. 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é du processeur de contenu au sein de l’environnement d’exécution.
Les travaux planifiés commencent-ils toujours à l’heure désignée ?
Les processus d’indexeur peuvent être mis en file d’attente et peuvent ne pas démarrer exactement à l’heure indiquée, en fonction de la charge de travail de traitement et d’autres facteurs. Par exemple, 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 de l’indexeur avec un intervalle par heure et une heure de début le 1er juin 2024 à 08: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 à ou autour du 1er janvier 2024 à 8h00 UTC. Supposons que cette exécution prend 20 minutes (ou une durée inférieure à 1 heure).
La deuxième exécution de l’indexeur commence le 1er janvier 2024 à 9h00 UTC ou autour de cette date. 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 vous avez des exigences strictes en matière d’exécution de l’indexeur avec des contraintes de temps, songez à utiliser le modèle d’API push pour pouvoir contrôler directement le pipeline d’indexation.
Que se passe-t-il si l’indexation échoue à plusieurs reprises sur le même document ?
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. Si l’indexation réussit, l’indexeur revient à 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.