Google Cloud Search 색인 생성 큐

커넥터 SDK 및 Cloud Search API는 Cloud Search 색인 생성 큐 생성을 지원합니다. 이러한 큐를 사용하여 다음 작업을 수행합니다.

  • 문서별 상태 (상태, 해시 등)를 유지하여 색인을 동기화 상태로 유지합니다.
  • 순회 중에 검색된 대로 색인을 생성할 항목의 목록을 유지합니다.
  • 상태에 따라 항목의 우선순위를 지정합니다.
  • 체크포인트 및 변경 토큰과 같은 상태 정보를 유지합니다.

큐는 색인이 생성된 항목에 할당된 라벨입니다 (예: 'default').

상태 및 우선순위

문서의 우선순위는 ItemStatus 코드에 따라 다릅니다. 가능한 코드는 우선순위 순서 (가장 높음에서 가장 낮음)로 다음과 같습니다.

  • ERROR: 항목에 비동기 오류가 발생하여 다시 색인을 생성해야 합니다.
  • MODIFIED: 항목이 이전에 색인이 생성되었지만 저장소에서 변경되었습니다.
  • NEW_ITEM: 항목에 아직 색인이 생성되지 않았습니다.
  • ACCEPTED: 항목이 이전에 색인이 생성되었으며 변경되지 않았습니다.

상태가 동일한 항목의 경우 큐에 가장 오래 있었던 항목에 더 높은 우선순위가 부여됩니다.

새 항목 또는 변경된 항목의 색인 생성

그림 1은 색인 생성 큐를 사용하여 새 항목 또는 변경된 항목의 색인을 생성하는 단계를 보여줍니다. 이러한 단계는 REST API 호출을 반영합니다. SDK에 상응하는 내용은 큐 작업 (커넥터 SDK)을 참고하세요.

Cloud Search 색인 생성 개요
그림 1. 항목을 추가하거나 업데이트하는 색인 생성 단계 항목
  1. 콘텐츠 커넥터는 items.push 를 사용하여 메타데이터와 해시를 큐에 푸시합니다.
    • 커넥터에 푸시 type 또는 contentHash가 포함된 경우 Cloud Search에서 상태를 결정합니다.
    • 알 수 없는 항목에는 NEW_ITEM 상태가 부여됩니다.
    • 해시가 일치하는 기존 항목은 ACCEPTED 상태로 유지됩니다.
    • 해시가 다른 기존 항목은 MODIFIED 상태가 됩니다.
  2. 커넥터는 items.poll 을 사용하여 색인을 생성할 항목을 결정합니다. Cloud Search는 우선순위 순서로 항목을 반환합니다.
  3. 커넥터는 저장소에서 항목을 검색하고 색인 API 요청을 빌드합니다.
  4. 커넥터는 items.index 를 사용하여 항목의 색인을 생성합니다. 항목은 처리가 완료되면 ACCEPTED 상태가 됩니다.

항목 삭제

전체 순회 전략은 두 개의 큐를 사용하여 항목의 색인을 생성하고 삭제를 감지합니다. 그림 2는 이 전략의 두 번째 순회를 보여줍니다.

Cloud Search 색인 생성 개요
그림 2. 항목 삭제
  1. 초기 순회에서 커넥터는 항목을 NEW_ITEM으로 '큐 A'에 푸시합니다. 각 항목에는 'A' 라벨이 부여됩니다.
  2. 커넥터는 큐 A를 폴링하고 항목의 색인을 생성합니다.
  3. 두 번째 전체 순회에서 커넥터는 항목을 '큐 B'에 푸시합니다.
    • 알 수 없는 항목에는 'B' 라벨과 NEW_ITEM 상태가 부여됩니다.
    • 해시가 일치하는 기존 항목은 라벨을 'B'로 변경하고 ACCEPTED 상태로 유지됩니다.
    • 해시가 다른 기존 항목은 라벨을 'B'로 변경하고 MODIFIED 상태가 됩니다.
  4. 커넥터는 큐 B를 폴링하고 항목의 색인을 생성합니다.
  5. 마지막으로 커넥터는 deleteQueueItems 큐 A에서 호출합니다. 이렇게 하면 이전에 색인이 생성되었으며 여전히 'A' 라벨이 있는 모든 항목이 삭제됩니다.
  6. 후속 순회에서는 두 큐의 역할이 바뀝니다.

큐 작업 (커넥터 SDK)

pushItems 빌더를 사용하여 항목을 푸시합니다. SDK는 우선순위 순서로 큐에서 항목을 자동으로 가져옵니다. Repository 클래스의 getDoc 메서드를 사용합니다.

큐 작업 (REST API)

색인 생성 중에 Items.index 를 사용하여 항목을 푸시할 수도 있습니다. 이러한 항목에는 ACCEPTED 상태가 자동으로 부여됩니다.

Items.push

이 메서드는 큐에 ID를 추가합니다. type 에 따라 결과가 결정됩니다. 새 ID를 푸시하면 NEW_ITEM 상태의 항목이 추가됩니다. 선택사항인 페이로드는 폴링 중에 반환됩니다.

폴링된 항목은 예약 되며 다른 폴링 호출로 반환될 수 없습니다. typeNOT_MODIFIED, REPOSITORY_ERROR 또는 REQUEUE로 설정된 Items.push를 사용하면 항목이 예약 취소 됩니다.

해시를 사용한 Items.push

푸시 요청에서 메타데이터 또는 콘텐츠 해시를 지정합니다. Cloud Search는 이를 저장된 값과 비교합니다. 일치하지 않으면 항목이 MODIFIED 상태가 됩니다. 존재하지 않는 일치하지 않는 ID는 NEW_ITEM 상태가 됩니다.

Items.poll

이 메서드는 우선순위가 높은 항목을 검색합니다. 반환된 각 항목은 제한 시간이 초과되거나, 다시 색인이 생성되거나, Items.push를 사용하여 예약 취소될 때까지 예약됩니다.