Планирование индексатора в поиске ИИ 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.

  1. Войдите в портал Azure и откройте страницу службы поиска.
  2. В области навигации слева выберите индексаторы.
  3. Откройте индексатор.
  4. Выберите Параметры.
  5. Прокрутите вниз до расписания, а затем выберите "Почасово", "Ежедневно" или "Настраиваемый", чтобы задать определенную дату, время или настраиваемый интервал.

Перейдите на вкладку Определения индексатора (JSON) в верхней части индекса, чтобы просмотреть определение расписания в формате XSD.

Работа планировщика

Для индексирования на основе текста планировщик может запустить столько заданий индексатора, сколько поддерживает служба поиска, которое определяется числом единиц поиска. Например, если у службы есть три реплика и четыре раздела, можно иметь 12 заданий индексатора в активном выполнении, инициируемых по запросу или по расписанию.

Индексаторы на основе навыков выполняются в другой среде выполнения. По этой причине количество единиц обслуживания не влияет на количество заданий индексатора на основе навыков, которые можно запустить. Несколько индексаторов на основе навыков могут выполняться параллельно, но это зависит от доступности узлов в среде выполнения.

Хотя несколько индексаторов могут выполняться одновременно, данный индексатор является одним экземпляром. Невозможно одновременно запускать две копии одного индексатора. Если индексатор по-прежнему выполняется при запуске следующего запланированного выполнения, ожидающее выполнение откладывается до следующего запланированного вхождения, позволяя текущему заданию завершиться.

Для большей ясности рассмотрим пример. Предположим, что мы настраиваем расписание индексатора с интервалом в час и временем начала 1 января 2024 года в 8:00:00:00 UTC. Вот что может произойти, когда выполнение индексатора занимает больше часа:

  • Первое выполнение индексатора начинается с 1 января 2024 г. в 8:00 в формате UTC. Предположим, что это выполнение занимает 20 минут (или любое время, которое меньше 1 часа).

  • Второе выполнение начинается с 1 января 2022 г. 9:00 UTC. Предположим, что выполнение занимает 70 минут — больше часа, и оно завершается только в 10:10 UTC.

  • Третий запуск по расписанию запланирован на 10:00 UTC, но на этот момент предыдущее выполнение еще не завершено. В результате этот запланированный запуск пропускается. Следующее выполнение индексатора не начнется до 11:00 в формате UTC.

Примечание.

Если индексатор имеет определенное расписание, но неоднократно завершается сбоем в одном документе каждый раз, индексатор начнет работать на менее частом интервале (до максимального интервала по крайней мере каждые 2 часа или 24 часа в зависимости от различных факторов реализации), пока он не будет успешно выполнен снова. Если вы считаете, что устранена какая-либо основная проблема, вы можете запустить индексатор вручную, и если индексирование выполнено успешно, индексатор вернется в его регулярное расписание.

Следующие шаги

Для индексаторов, выполняющихся по расписанию, можно отслеживать операции, извлекая состояние из службы поиска или получая подробные сведения, включив ведение журнала ресурсов.