커넥터 SDK 및 Google Cloud Search API를 사용하면 다음 작업을 수행하는 데 사용되는 Cloud Search 색인 생성 큐를 만들 수 있습니다.
색인을 저장소와 동기화 상태로 유지하는 데 사용할 수 있는 문서별 상태(상태, 해시 값 등) 유지관리
순회 프로세스 중에 검색된 대로 색인을 생성할 항목의 목록 유지관리
항목 상태에 따라 큐 항목의 우선순위 지정
체크포인트, 변경 토큰 등 효율적인 통합을 위한 추가 상태 정보 유지관리
큐는 기본 큐의 경우 'default', 큐 B의 경우 'B'와 같이 색인이 생성된 항목에 할당된 라벨입니다.
상태 및 우선순위
큐에서 문서의 우선순위는 ItemStatus
코드에 기반합니다. 다음은 가능한 ItemStatus
코드를 우선순위 (처리되는 순서)대로 나열한 것입니다.
ERROR
- 색인 생성 프로세스 중에 비동기 오류가 발생하여 다시 색인을 생성해야 하는 항목MODIFIED
- 이전에 색인이 생성되었고 마지막 색인이 생성된 후로 저장소에서 수정된 적이 있는 항목NEW_ITEM
- 색인이 생성되지 않은 항목ACCEPTED
- 이전에 색인이 생성되었고 마지막 색인이 생성된 후로 저장소에서 변경되지 않은 문서입니다.
큐에 있는 두 항목의 상태가 같을 때 가장 긴 시간 동안 큐에 있었던 항목에 더 높은 우선순위가 부여됩니다.
색인 생성 큐를 사용하여 새 항목 또는 변경된 항목의 색인 생성 개요
그림 1에서는 색인 생성 큐를 사용하여 새 항목 또는 변경된 항목의 색인을 생성하는 단계를 보여줍니다. 다음 단계는 REST API 호출을 보여줍니다. 동등한 SDK 호출은 큐 작업 (커넥터 SDK)을 참조하세요.
콘텐츠 커넥터는
items.push
를 사용하여 항목 (메타데이터 및 해시)을 색인 생성 큐로 푸시하여 항목의 상태 (MODIFIED
,NEW_ITEM
,DELETED
)를 설정합니다. 구체적으로는 다음과 같습니다.- 푸시할 때 커넥터는 푸시
type
또는contentHash
를 명시적으로 포함합니다. - 커넥터에
type
가 포함되어 있지 않으면 Cloud Search가 자동으로contentHash
를 사용하여 항목의 상태를 확인합니다. - 알 수 없는 상품인 경우 상품 상태가
NEW_ITEM
로 설정됩니다. - 상품이 존재하고 해시 값이 일치하면 상태가
ACCEPTED
로 유지됩니다. - 상품이 존재하고 해시가 다르면 상태는
MODIFIED
이 됩니다.
항목 상태 설정 방법에 대한 자세한 내용은 Cloud Search 시작하기 가이드에서 GitHub 저장소 순회 샘플 코드를 참조하세요.
일반적으로 푸시는 커넥터의 콘텐츠 순회 또는 변경 감지 프로세스와 연결됩니다.
- 푸시할 때 커넥터는 푸시
콘텐츠 커넥터는
items.poll
를 사용하여 큐를 폴링하여 색인을 생성할 항목을 결정합니다. Cloud Search는 색인 생성이 가장 필요한 항목을 커넥터에 알려주며 먼저 상태 코드별로 정렬된 다음 큐 내 시간별로 정렬됩니다.커넥터는 저장소에서 이러한 항목을 검색하고 색인 API 요청을 작성합니다.
커넥터는
items.index
를 사용하여 항목의 색인을 생성합니다. Cloud Search가 항목 처리를 성공적으로 완료한 후에만 항목이ACCEPTED
상태로 전환됩니다.
또한 커넥터는 항목이 저장소에 더 이상 존재하지 않는 경우 항목을 삭제하거나, 항목이 수정되지 않았거나 소스 저장소 오류가 있는 경우 항목을 다시 푸시할 수 있습니다. 항목 삭제에 대한 자세한 내용은 다음 섹션을 참고하세요.
색인 생성 큐를 사용하여 항목 삭제 개요
전체 순회 전략은 큐 2개 프로세스를 사용하여 항목의 색인을 생성하고 삭제를 감지합니다. 그림 2는 2개의 색인 생성 큐를 사용하여 항목을 삭제하는 단계를 보여줍니다. 구체적으로 그림 2에서는 전체 순회 전략을 사용하여 수행된 두 번째 순회를 보여줍니다. 이 단계에서는 REST API 호출을 사용합니다. 동등한 SDK 호출은 큐 작업 (커넥터 SDK)을 참조하세요.
초기 순회 시 콘텐츠 커넥터는
items.push
를 사용하여 항목 (메타데이터 및 해시)을 색인 생성 큐로 푸시하고 '큐 A'를 큐에 존재하지 않는 경우NEW_ITEM
로 푸시합니다. 각 항목에는 '대기열 A'의 라벨 'A'가 할당됩니다. 콘텐츠는 Cloud Search에 색인이 생성됩니다.콘텐츠 커넥터는
items.poll
로 큐 A를 폴링하여 색인을 생성할 항목을 결정합니다. Cloud Search는 색인 생성이 가장 필요한 항목을 커넥터에 알려주며 먼저 상태 코드별로 정렬된 다음 큐 내 시간별로 정렬됩니다.커넥터는 저장소에서 이러한 항목을 검색하고 색인 API 요청을 작성합니다.
커넥터는
items.index
를 사용하여 항목의 색인을 생성합니다. Cloud Search가 항목 처리를 성공적으로 완료한 후에만 항목이ACCEPTED
상태로 전환됩니다.deleteQueueItems
메서드는 '대기열 B'에서 호출됩니다. 그러나 대기열 B로 푸시된 항목이 없으므로 삭제할 수 없습니다.두 번째 전체 순회에서 콘텐츠 커넥터는
items.push
를 사용하여 항목 (메타데이터 및 해시)을 큐 B로 푸시합니다.- 푸시할 때 커넥터는 푸시
type
또는contentHash
를 명시적으로 포함합니다. - 커넥터에
type
가 포함되어 있지 않으면 Cloud Search가 자동으로contentHash
를 사용하여 항목의 상태를 확인합니다. - 항목을 알 수 없는 경우 항목 상태가
NEW_ITEM
로 설정되고 대기열 라벨이 'B'로 변경됩니다. - 항목이 존재하고 해시 값이 일치하면 상태가
ACCEPTED
로 유지되고 큐 라벨이 'B'로 변경됩니다. - 항목이 존재하고 해시가 다르면 상태가
MODIFIED
가 되고 큐 라벨이 'B'로 변경됩니다.
- 푸시할 때 커넥터는 푸시
콘텐츠 커넥터는
items.poll
를 사용하여 큐를 폴링하여 색인을 생성할 항목을 결정합니다. Cloud Search는 색인 생성이 가장 필요한 항목을 커넥터에 알려주며 먼저 상태 코드별로 정렬된 다음 큐 내 시간별로 정렬됩니다.커넥터는 저장소에서 이러한 항목을 검색하고 색인 API 요청을 작성합니다.
커넥터는
items.index
를 사용하여 항목의 색인을 생성합니다. Cloud Search가 항목 처리를 성공적으로 완료한 후에만 항목이ACCEPTED
상태로 전환됩니다.마지막으로 큐 A에서
deleteQueueItems
가 호출되어 이전에 색인이 생성된 모든 CCloud Search 항목 중 여전히 큐 'A' 라벨이 있는 항목을 삭제합니다.이후의 전체 순회에서는 색인 생성에 사용되는 큐와 삭제에 사용되는 큐가 교체됩니다.
큐 작업(커넥터 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
를 다시 호출하면 반환되지 않습니다.
Items.push
를 type
와 함께 NOT_MODIFIED
, REPOSITORY_ERROR
또는 REQUEUE
로 사용하면 폴링된 항목을 예약 취소합니다. 예약된 항목과 예약이 취소된 항목에 대한 자세한 내용은 Items.poll 섹션을 참조하세요.
해시가 있는 Items.push
Google Cloud Search API는 Items.index
요청에서 메타데이터 및 콘텐츠 해시 값 지정을 지원합니다. type
를 지정하는 대신 푸시 요청에 메타데이터 또는 콘텐츠 해시 값을 지정할 수 있습니다. Cloud Search 색인 생성 큐는 제공된 해시 값을 데이터 소스의 항목에서 사용할 수 있는 저장된 값과 비교합니다. 일치하지 않으면 해당 항목은 MODIFIED
로 표시됩니다. 해당 항목이 색인에 없으면 상태는 NEW_ITEM
입니다.
Items.poll
Items.poll 메소드는 큐에서 가장 우선순위가 높은 항목을 검색합니다. 요청된 상태 값과 반환된 상태 값은 요청된 우선순위 큐의 상태 또는 반환된 ID의 상태를 나타냅니다.
기본적으로 큐의 모든 섹션에 있는 항목이 우선순위에 따라 반환될 수 있습니다. 반환된 각 항목은 예약되며 다음 조건 중 하나가 충족될 때까지 Items.poll
를 다시 호출해도 반환되지 않습니다.
- 예약이 타임아웃된 경우
Items.index
에 의해 항목이 다시 큐에 추가됩니다.Items.push
는type
값NOT_MODIFIED
,REPOSITORY_ERROR
또는REQUEUE
를 사용하여 호출됩니다.