Azure AI 검색에서 인덱서 예약

schedule 속성을 설정할 때 일정에 따라 실행되도록 인덱서를 구성할 수 있습니다. 인덱서 일정 작성이 유용한 경우는 다음과 같습니다.

  • 원본 데이터는 시간이 지남에 따라 변하며 인덱서가 자동으로 그 차이를 처리하기를 원합니다.
  • 원본 데이터는 매우 크며 모든 콘텐츠를 인덱싱하려면 되풀이 일정이 필요합니다.
  • 인덱스는 여러 인덱스를 사용하여 여러 원본에서 채워지며 충돌을 줄이기 위해 작업을 엇갈리게 배치하려고 합니다.

일반적인 2시간 처리 기간 내에 인덱싱을 완료할 수 없는 경우 인덱서가 2시간 주기로 실행되도록 예약하여 대량의 데이터를 처리할 수 있습니다. 데이터 원본이 변경 검색 논리를 지원하는 한, 인덱서는 각 실행에서 검색이 중단된 위치를 자동으로 선택할 수 있습니다.

인덱서가 일정에 따라 진행되면 간격 또는 시작 시간을 지우거나 disabled를 true로 설정할 때까지 일정이 유지됩니다. 처리할 것이 없는 경우 인덱서를 일정에 따라 유지해도 시스템 성능에 영향을 주지 않습니다. 변경된 콘텐츠를 확인하는 것은 비교적 빠른 작업입니다.

필수 조건

  • 데이터 원본 및 인덱스로 구성된 유효한 인덱서입니다.

  • 데이터 원본에서 검색을 변경합니다. Azure Storage 및 SharePoint에는 기본 제공된 변경 감지 기능이 있습니다. Azure SQLAzure Cosmos DB와 같은 다른 데이터 원본은 수동으로 사용하도록 설정해야 합니다.

일정 정의

일정은 인덱서 정의의 일부입니다. schedule 속성을 생략하면 인덱서는 요청 시에만 실행됩니다. 속성에는 두 부분이 있습니다.

속성 설명
"interval" (필수) 두 번의 연속된 인덱서 실행 시작 사이의 시간 간격입니다. 허용되는 가장 작은 간격은 5분이고, 가장 긴 간격은 1,440분(24시간)입니다. 형식은 XSD "dayTimeDuration" 값( ISO 8601 기간 값의 제한된 하위 집합)이어야 합니다.

이에 대한 패턴은 P(nD)(T(nH)(nM))입니다.

예제: 15분 간격이면 PT15M, 2시간 간격이면 PT2H.
"startTime" (선택 사항) 시작 시간은 UTC(협정 세계시)로 지정됩니다. 생략하는 경우 현재 시간이 사용됩니다. 이 시간은 과거일 수 있으며, 이 경우 원래 시작 시간 이후 인덱서가 계속 실행된 것처럼 첫 번째 실행이 예약됩니다.

다음 예제는 1월 1일 자정에 시작하여 2시간마다 실행되는 일정입니다.

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

일정 구성

일정은 인덱서 정의에 지정됩니다. 일정을 설정하려면 Azure Portal, REST API 또는 Azure SDK를 사용할 수 있습니다.

  1. Azure Portal에 로그인하고 검색 서비스 페이지를 엽니다.
  2. 왼쪽 탐색 창에서 인덱서를 선택합니다.
  3. 인덱스를 엽니다.
  4. 설정을 선택합니다.
  5. 일정까지 아래로 스크롤한 다음, 매시간, 매일 또는 사용자 지정을 선택하여 특정 날짜, 시간 또는 사용자 지정 간격을 설정합니다.

인덱스 맨 위에 있는 인덱서 정의(JSON) 탭으로 전환하여 일정 정의를 XSD 형식으로 봅니다.

일정 예약 동작

텍스트 기반 인덱싱의 경우 스케줄러는 검색 서비스에서 지원하는 만큼의 인덱서 작업을 시작할 수 있으며 이는 검색 단위 수로 결정됩니다. 예를 들어 서비스에 3개의 복제본과 4개의 파티션이 있는 경우 요청 시 시작되든 일정에 따라 시작되든 12개의 인덱서 작업이 활성 실행 중일 수 있습니다.

기술 기반 인덱서는 다른 실행 환경에서 실행됩니다. 이러한 이유로 서비스 단위 수는 실행할 수 있는 기술 기반 인덱서 작업 수와 관련이 없습니다. 여러 기술 기반 인덱서는 병렬로 실행될 수 있지만 실행 환경 내의 노드 가용성에 따라 달라집니다.

여러 인덱서를 동시에 실행할 수 있지만 지정된 인덱서는 단일 인스턴스입니다. 동일한 인덱서의 복사본 두 개를 동시에 실행할 수 없습니다. 다음 예약된 실행이 시작되도록 설정되었을 때 인덱서가 계속 실행 중인 경우 보류 중인 실행은 다음 예약된 실행까지 연기되어 현재 작업이 완료될 수 있습니다.

좀 더 구체적인 예제를 살펴보겠습니다. 간격이 매시간이고 시작 시간이 2024년 1월 1일 오전 8시(UTC)인 인덱서 예약을 구성한다고 가정합니다. 인덱서 실행 시간이 1시간 이상 걸리면 다음과 같은 일이 발생할 수 있습니다.

  • 첫 번째 인덱서 실행이 2024년 1월 1일 오전 8시(UTC)경에 시작됩니다. 이 실행에 20분(또는 1시간 미만의 기간)이 걸리는 것으로 가정합니다.

  • 두 번째 실행이 2022년 1월 1일 오전 9시(UTC)경에 시작됩니다. 이 실행에 70분(1시간 초과)이 걸리고 오전 10시 10분(UTC)까지 완료되지 않는다고 가정합니다.

  • 세 번째 실행은 오전 10시(UTC)에 시작하도록 예약되어 있지만, 이전 실행이 계속해서 실행되고 있습니다. 이 경우 예약된 실행을 건너뜁니다. 인덱서의 다음 실행은 오전 11시(UTC)가 되어서야 시작됩니다.

참고 항목

인덱서가 특정 일정으로 설정되어 있지만 매번 같은 문서를 반복적으로 실패하는 경우 인덱서는 성공적으로 다시 진행될 때까지 빈도가 낮은 간격(여러 구현 요소에 따라 2시간 간격 이상 또는 최대 24시간마다 한 번 이상)으로 실행을 시작합니다. 근본적인 문제를 해결했다고 생각되면 인덱서를 수동으로 실행할 수 있으며, 인덱싱이 성공하면 인덱서는 일반 일정으로 돌아갑니다.

다음 단계

일정에 따라 실행되는 인덱서의 경우 검색 서비스에서 상태를 검색하여 작업을 모니터링하거나 리소스 로깅을 사용하도록 설정하여 자세한 정보를 얻을 수 있습니다.