Google Cloud Search 색인 생성 큐

커넥터 SDK 및 Cloud Search REST API를 사용하면 다음 작업을 수행하는 데 사용되는 Cloud Search 색인 생성 큐를 만들 수 있습니다.

  • 색인을 저장소와 동기화 상태로 유지하는 데 사용할 수 있는 문서별 상태(상태, 해시 값 등) 유지관리

  • 순회 프로세스 중에 검색된 대로 색인을 생성할 항목의 목록 유지관리

  • 항목 상태에 따라 큐 항목의 우선순위 지정

  • 체크포인트, 변경 토큰 등 효율적인 통합을 위한 추가 상태 정보 유지관리

상태 및 우선순위

큐의 문서 우선순위는 ItemStatus 코드를 기준으로 합니다. 다음은 가능한 ItemStatus 코드를 우선순위(처리되는 순서)대로 나열한 것입니다.

  • ERROR - 색인 생성 프로세스 중에 비동기 오류가 발생하여 다시 색인을 생성해야 하는 항목

  • MODIFIED - 이전에 색인이 생성되었고 마지막 색인이 생성된 후로 저장소에서 수정된 적이 있는 항목

  • NEW_ITEM - 색인이 생성되지 않은 항목

  • ACCEPTED - 이전에 색인이 생성되었고 마지막 색인이 생성된 후로 저장소에서 변경된 적이 없는 문서

큐에 있는 두 항목의 상태가 같을 때 가장 긴 시간 동안 큐에 있었던 항목에 더 높은 우선순위가 부여됩니다.

큐 작업(커넥터 SDK)

콘텐츠 커넥터 SDK는 큐에 항목을 내보내고 큐에서 항목을 가져오는 작업을 제공합니다.

항목을 패키징하고 큐에 내보내려면 pushItems 빌더 클래스를 사용하세요.

개발자는 큐에서 처리할 항목을 가져오기 위해 특별한 작업을 수행할 필요가 없습니다. 대신에 SDK가 Repository 클래스의 getDoc 메서드를 사용하여 우선순위에 따라 큐에서 항목을 자동으로 가져옵니다.

큐 작업(REST API)

REST API는 큐로 항목을 내보내고 큐에서 항목을 가져올 때 다음과 같은 2가지 메서드를 제공합니다.

  • 큐로 항목을 푸시하려면 Items.push를 사용합니다.
  • 큐의 항목을 폴링하려면 Items.poll을 사용합니다.

또한 Items.index를 사용하여 색인 생성 중에 큐로 항목을 푸시할 수도 있습니다. 색인 생성 중에 큐로 푸시된 항목은 type이 필요 없으며, ACCEPTED 상태가 자동으로 할당됩니다.

Items.push

Items.push 메서드는 큐에 ID를 추가합니다. 이 메서드는 내보내기 작업의 결과를 결정하는 특정 type 값을 사용하여 호출할 수 있습니다. type 값 목록을 보려면 Items.push 메서드의 item.type 필드를 참조하세요.

새 ID를 푸시하면 NEW_ITEM ItemStatus 코드를 사용하여 새 항목이 추가됩니다.

선택적 페이로드는 항상 저장되고 불투명 값으로 처리되며 Items.poll에서 반환됩니다.

항목이 폴링되면 예약됩니다. 즉, Items.poll을 다시 호출하면 반환되지 않습니다. typeNOT_MODIFIED, REPOSITORY_ERROR, REQUEUEItems.push를 사용하면 폴링된 항목의 예약이 취소됩니다. 예약된 항목과 예약이 취소된 항목에 대한 자세한 내용은 Items.poll 섹션을 참조하세요.

해시를 사용한 Items.push

Cloud Search REST API는 Items.index 요청에 메타데이터 및 콘텐츠 해시 값 지정을 지원합니다. 푸시 요청에 type을 지정하는 대신 메타데이터 또는 콘텐츠 해시 값을 지정할 수 있습니다. Cloud Search 색인 생성 큐는 데이터 소스의 항목에서 사용 가능한 저장된 값과 제공된 해시 값을 비교합니다. 일치하지 않으면 해당 항목이 MODIFIED로 표시됩니다. 색인에 해당 항목이 존재하지 않으면 상태가 NEW_ITEM으로 표시됩니다.

Items.poll

Items.poll 메서드는 큐에서 가장 우선순위가 높은 항목을 검색합니다. 요청된 상태 값과 반환된 상태 값은 요청된 우선순위 큐의 상태 또는 반환된 ID의 상태를 나타냅니다.

기본적으로 큐의 모든 섹션에 있는 항목이 우선순위에 따라 반환될 수 있습니다. 반환된 각 항목은 예약되며 다음 조건 중 하나를 만족할 때까지 Items.poll을 다시 호출해도 반환되지 않습니다.

  • 예약이 타임아웃된 경우
  • Items.index로 인해 항목이 다시 큐에 추가된 경우
  • typeNOT_MODIFIED, REPOSITORY_ERROR, REQUEUE를 사용하여 Items.push가 호출된 경우