Google Cloud Search インデックス登録キュー

Connector SDK と Cloud Search REST API を使用すると、次のタスクを実行するために使用される Cloud Search インデックス登録キューを作成できます。

  • インデックスとリポジトリとの同期を保つために使用できるドキュメントごとの状態(ステータス、ハッシュ値など)を維持する。

  • 走査プロセス中に検出された、インデックスに登録されるアイテムのリストを維持する。

  • アイテム ステータスに基づいてキュー内のアイテムの優先順位を付ける。

  • チェックポイント、変更トークンなど、効率的に統合するための追加の状態情報を維持する。

ステータスと優先度

キュー内のドキュメントの優先度は、ItemStatus コードに基づいて決まります。以下に、使用可能な ItemStatus コードを優先度順(処理される順)に示します。

  • ERROR - インデックス登録中に非同期エラーが発生し、インデックスに再登録する必要があるアイテム。

  • MODIFIED - 以前にインデックスに登録され、前回のインデックス登録以降にリポジトリ内で変更されたアイテム。

  • NEW_ITEM - インデックスに登録されていないアイテム。

  • ACCEPTED - 以前にインデックスに登録され、前回のインデックス登録以降にリポジトリ内で変更されていないドキュメント。

キュー内の 2 つのアイテムのステータスが同じ場合は、時間キューに入っている時間が長いアイテムの優先度が高くなります。

キュー オペレーション(Connector SDK)

Content Connector SDK は、キューとの間でアイテムを push および pull するオペレーションを提供します。

アイテムをパッケージ化してキューに push するには、pushItems ビルダークラスを使用します。

処理のためにキューからアイテムを pull する場合、特別な操作を行う必要はありません。アイテムは、SDK によって、Repository クラスの getDoc メソッドを使用して優先度順にキューから自動的に pull されます。

キュー オペレーション(REST API)

REST API は、キューにアイテムを push し、キューからアイテムを pull する次の 2 つのメソッドを提供します。

  • アイテムをキューに push するには、Items.push を使用します。
  • キュー内のアイテムをポーリングするには、Items.poll を使用します。

Items.index を使用して、インデックス登録中にアイテムをキューに push することもできます。インデックス登録中にキューに push されたアイテムには type は不要で、自動的に ACCEPTED ステータスが割り当てられます。

Items.push

Items.push メソッドは、キューに ID を追加します。このメソッドは、push オペレーションの結果を決定する特定の type 値で呼び出すことができます。type 値のリストについては、Items.push メソッドの item.type 項目をご覧ください。

新しい ID を push すると、ItemStatus コードが NEW_ITEM の新規エントリが追加されます。

オプションのペイロードは常に保存されて、不透明な値として扱われ、Items.poll から返されます。

アイテムはポーリングされると予約され、以降の Items.poll 呼び出しでは返されなくなります。NOT_MODIFIEDREPOSITORY_ERRORREQUEUE のいずれかの typeItems.push を使用すると、ポーリングされたエントリが予約解除されます。予約されたエントリと予約解除されたエントリの詳細については、Items.poll をご覧ください。

ハッシュを含む Items.push

Cloud Search REST API では、Items.index リクエストでメタデータとコンテンツ ハッシュ値を指定できます。type を指定する代わりに、push リクエストでメタデータやコンテンツ ハッシュ値を指定できます。指定したハッシュ値は、Cloud Search インデックス登録キューにより、データソース内にアイテムがあれば使用できる保存済みの値と比較されます。一致しない場合、そのエントリは MODIFIED としてマークされます。対応するアイテムがインデックスに存在しない場合、ステータスは NEW_ITEM になります。

Items.poll

Items.poll メソッドは、キューから優先度が最も高いエントリを取得します。リクエストおよび返されたステータス値は、リクエストされた優先キューのステータスまたは返された ID のステータスを示します。

デフォルトでは、優先度に基づいてキューのいずれかのセクションからエントリが返されます。返される各エントリは予約されており、次のいずれかの条件が満たされるまで、Items.poll への他の呼び出しでは返されません。

  • 予約がタイムアウトする。
  • エントリが Items.index によって再びキューに入れられる。
  • NOT_MODIFIEDREPOSITORY_ERRORREQUEUE のいずれかの値の typeItems.push が呼び出される。