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

Connector SDK と Cloud Search API は、Cloud Search インデックス登録キューの作成をサポートしています。これらのキューを使用して、次のことを行います。

  • インデックスの同期を保つために、ドキュメントごとの状態(ステータス、ハッシュなど)を維持します。
  • 走査中に検出されたインデックス登録されるアイテムのリストを維持する。
  • ステータスに基づいてアイテムの優先順位を付ける。
  • チェックポイントや変更トークンなどの状態情報を維持します。

キューは、インデックス登録されたアイテム(「default」)。

ステータスと優先度

ドキュメントの優先度は、ItemStatus コードによって決まります。優先度順(高い順)に、次のコードを使用できます。

  • ERROR: アイテムで非同期エラーが発生し、インデックスの再登録が必要です。
  • MODIFIED: アイテムは以前にインデックスに登録されましたが、リポジトリ内で変更されています。
  • NEW_ITEM: アイテムはまだインデックスに登録されていません。
  • ACCEPTED: アイテムは以前にインデックスに登録されており、変更されていません。

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

新しいアイテムまたは変更されたアイテムをインデックス登録する

図 1 は、インデックス登録キューを使用して新規または変更されたアイテムをインデックス登録する手順を示しています。これらの手順は REST API 呼び出しを反映しています。SDK の同等の手順については、キュー オペレーション(Connector 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 つのキューを使用してアイテムのインデックス登録と削除の検出を行います。図 2 は、この戦略の 2 回目のトラバーサルを示しています。

Cloud Search インデックス登録の概要
図 2. アイテムを削除する
  1. 最初の走査では、コネクタはアイテムを NEW_ITEM として「キュー A」にプッシュします。各アイテムに「A」というラベルが付けられます。
  2. コネクタはキュー A をポーリングし、アイテムをインデックスに登録します。
  3. 2 回目の完全走査では、コネクタはアイテムを「キュー B」にプッシュします。
    • 不明なアイテムにはラベル「B」とステータス NEW_ITEM が付与されます。
    • ハッシュが一致する既存のアイテムは、ラベルが「B」に変更され、ACCEPTED のままになります。
    • ハッシュ値が異なる既存のアイテムは、ラベルが「B」に変更され、MODIFIED になります。
  4. コネクタはキュー B をポーリングし、アイテムをインデックスに登録します。
  5. 最後に、コネクタはキュー A で deleteQueueItems を呼び出します。これにより、ラベル「A」がまだ付いている以前にインデックス登録されたアイテムがすべて削除されます。
  6. 以降のトラバーサルでは、2 つのキューの役割が入れ替わります。

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

pushItems ビルダーを使用してアイテムをプッシュします。SDK は、Repository クラスの getDoc メソッドを使用して、優先度順にキューからアイテムを自動的に pull します。

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

  • プッシュするには、Items.push を使用します。
  • ポーリングするには、Items.poll を使用します。

Items.index を使用して、インデックス登録中にアイテムを push することもできます。これらのアイテムには ACCEPTED ステータスが自動的に付与されます。

Items.push

このメソッドは、キューに ID を追加します。type は結果を決定します。新しい ID をプッシュすると、NEW_ITEM ステータスのエントリが追加されます。ポーリング中に返されるオプションのペイロード。

ポーリングされたアイテムは予約され、他のポーリング呼び出しでは返されません。Items.pushtypeNOT_MODIFIEDREPOSITORY_ERROR、または REQUEUE に設定して使用すると、エントリの予約が解除されます。

ハッシュを含む Items.push

プッシュ リクエストでメタデータまたはコンテンツ ハッシュを指定します。Cloud Search は、これらの値を保存された値と比較します。一致しない場合、エントリは MODIFIED になります。存在しない不一致の ID は NEW_ITEM になります。

Items.poll

このメソッドは、優先度の高いエントリを取得します。返された各エントリは、タイムアウトになるか、再インデックス登録されるか、Items.push を使用して予約が解除されるまで予約されます。