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 を使用して、メタデータとハッシュをキューに push します。
    • コネクタに 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. 最初の走査で、コネクタはアイテムを「キュー A」に NEW_ITEM として push します。各アイテムにはラベル「A」が付けられます。
  2. コネクタはキュー A をポーリングし、アイテムをインデックスに登録します。
  3. 2 回目の全走査で、コネクタはアイテムを「キュー B」に push します。
    • 不明なアイテムにはラベル「B」とステータス NEW_ITEM が割り当てられます。
    • ハッシュが一致する既存のアイテムはラベルが「B」に変更され、ACCEPTED のままになります。
    • ハッシュが異なる既存のアイテムはラベルが「B」に変更され、MODIFIED になります。
  4. コネクタはキュー B をポーリングし、アイテムをインデックスに登録します。
  5. 最後に、コネクタは deleteQueueItems キュー A で呼び出します。これにより、ラベル「A」が残っている以前にインデックスに登録されたアイテムがすべて削除されます。
  6. 以降の走査では、2 つのキューの役割が入れ替わります。

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

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

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

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

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

Items.push

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

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

ハッシュを含む Items.push

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

Items.poll

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