Планирование индексатора в поиске ИИ Azure
Индексаторы можно настроить для запуска по расписанию при задании schedule
свойства. Вот некоторые сценарии, в которых можно настроить график запуска индексатора.
- Исходные данные изменяются с течением времени и требуется, чтобы индексатор автоматически обрабатывал разницу.
- Исходные данные очень большие, и вам потребуется повторяющееся расписание для индексирования всего содержимого.
- Индекс заполняется из нескольких источников, используя несколько индексаторов, и вы хотите ошеломить задания для уменьшения конфликтов.
Если индексирование не может завершиться в обычном 2-часовом окне обработки, можно запланировать выполнение индексатора на 2-часовом интервале для работы с большим объемом данных. Если источник данных поддерживает логику обнаружения изменений, индексаторы могут автоматически забрать место, в котором они остались в каждом запуске.
После того как индексатор находится в расписании, он остается в расписании, пока не снимите интервал или время начала или установите disabled
значение true. Оставляя индексатор в расписании, когда нет ничего для обработки, не повлияет на производительность системы. Проверка измененного содержимого является относительно быстрой операцией.
Необходимые компоненты
Допустимый индексатор, настроенный с источником данных и индексом.
Обнаружение изменений в источнике данных. служба хранилища Azure и SharePoint имеют встроенное обнаружение изменений. Другие источники данных, такие как SQL Azure и Azure Cosmos DB , должны быть включены вручную.
Определение расписания
Расписание входит в состав определения индексатора. schedule
Если свойство опущено, индексатор будет выполняться только по запросу. Свойство состоит из двух частей.
Свойство | Description |
---|---|
"интервал" | Обязательный параметр. Задает время между двумя последовательными запусками индексатора. Минимальный интервал составляет 5 минут, максимальный — 1440 минут (24 часа). Значение должно быть отформатировано как значение dayTimeDuration XSD (ограниченное подмножество значения продолжительности ISO 8601 ). Шаблон для этого: P(nD)(T(nH)(nM)) Примеры: PT15M каждые 15 минут PT2H в течение каждых двух часов. |
StartTime | (необязательно) Время начала указывается в согласованном универсальном времени (UTC). Если опущено, используется текущее время. Это время может быть в прошлом, в этом случае первое выполнение запланировано так, как если бы индексатор работал непрерывно с исходного времени начала. |
Следующий пример — это расписание, начинающееся 1 января в полночь и выполняющееся каждые два часа.
{
"dataSourceName" : "hotels-ds",
"targetIndexName" : "hotels-idx",
"schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}
Настройка расписаний
Расписания указываются в определении индексатора. Чтобы настроить расписание, можно использовать портал Azure, REST API или пакет SDK Azure.
- Войдите в портал Azure и откройте страницу службы поиска.
- В области навигации слева выберите индексаторы.
- Откройте индексатор.
- Выберите Параметры.
- Прокрутите вниз до расписания, а затем выберите "Почасово", "Ежедневно" или "Настраиваемый", чтобы задать определенную дату, время или настраиваемый интервал.
Перейдите на вкладку Определения индексатора (JSON) в верхней части индекса, чтобы просмотреть определение расписания в формате XSD.
Часто задаваемые вопросы о планировании поведения
Можно ли параллельно запускать несколько заданий индексатора?
Можно одновременно запускать несколько индексаторов, но каждый индексатор является одним экземпляром. Невозможно одновременно запускать две копии одного индексатора.
Для индексирования на основе текста планировщик может запустить столько заданий индексатора, сколько поддерживает служба поиска, которое определяется числом единиц поиска. Например, если у службы три реплики и четыре секции, в активном выполнении может быть 12 заданий индексатора, инициированных по запросу или по расписанию.
Для индексирования на основе навыков индексаторы выполняются в определенной среде выполнения. По этой причине количество единиц обслуживания не влияет на количество заданий индексатора на основе навыков, которые можно запустить. Несколько индексаторов на основе навыков могут выполняться параллельно, но это зависит от доступности обработчика содержимого в среде выполнения.
Всегда ли запланированные задания начинаются в указанное время?
Процессы индексатора могут быть в очереди и могут не запускаться точно во время публикации в зависимости от рабочей нагрузки обработки и других факторов. Например, если индексатор по-прежнему выполняется при запуске следующего запланированного выполнения, ожидающее выполнение откладывается до следующего запланированного вхождения, позволяя текущему заданию завершиться.
Для большей ясности рассмотрим пример. Предположим, что мы настраиваем расписание индексатора с интервалом в час и временем начала 1 января 2024 года в 8:00:00:00 UTC. Вот что может произойти, когда выполнение индексатора занимает больше часа:
Первое выполнение индексатора начинается с 1 января 2024 г. в 8:00 в формате UTC. Предположим, что это выполнение занимает 20 минут (или любое время, которое меньше 1 часа).
Второе выполнение начинается с 1 января 2024 г. 9:00 UTC. Предположим, что выполнение занимает 70 минут — больше часа, и оно завершается только в 10:10 UTC.
Третий запуск по расписанию запланирован на 10:00 UTC, но на этот момент предыдущее выполнение еще не завершено. В результате этот запланированный запуск пропускается. Следующее выполнение индексатора не начнется до 11:00 в формате UTC.
Примечание.
Если у вас есть строгие требования к выполнению индексатора, чувствительные к времени, следует рассмотреть возможность использования модели PUSH API, чтобы управлять конвейером индексирования напрямую.
Что происходит, если индексирование повторно завершается ошибкой в одном документе?
Если индексатор имеет определенное расписание, но неоднократно завершается сбоем в одном документе каждый раз, индексатор начнет работать на менее частом интервале (до максимального интервала по крайней мере каждые 2 часа или 24 часа в зависимости от различных факторов реализации), пока он не будет успешно выполнен снова. Если вы считаете, что устранена базовая проблема, вы можете запустить индексатор вручную, и если индексирование выполнено успешно, индексатор вернется в его регулярное расписание.
Следующие шаги
Для индексаторов, выполняющихся по расписанию, можно отслеживать операции, извлекая состояние из службы поиска или получая подробные сведения, включив ведение журнала ресурсов.