Connector SDK と Cloud Search API は、 Cloud Search インデックス登録キューの作成をサポートしています。これらのキューは次の目的で使用します。
- インデックスの同期を維持するために、ドキュメントごとの状態(ステータス、ハッシュなど)を維持する。
- 走査中に検出された、インデックスに登録されるアイテムのリストを維持する。
- ステータスに基づいてアイテムに優先順位を付ける。
- チェックポイントや変更トークンなどの状態情報を維持する。
キューは、インデックスに登録されたアイテムに割り当てられたラベルです(例:「default」)。
ステータスと優先度
ドキュメントの優先度は、その
ItemStatus
コードによって異なります。優先度順(高い順)に、次のコードを使用できます。
ERROR: アイテムで非同期エラーが発生したため、インデックスに再登録する必要があります。MODIFIED: アイテムは以前にインデックスに登録されましたが、リポジトリ内で変更されています。NEW_ITEM: アイテムはまだインデックスに登録されていません。ACCEPTED: アイテムは以前にインデックスに登録されており、変更されていません。
ステータスが同じアイテムの場合、キューに登録されている期間が長いアイテムが優先されます。
新しいアイテムまたは変更されたアイテムをインデックスに登録する
図 1 は、インデックス登録キューを使用して新しいアイテムまたは変更されたアイテムをインデックスに登録する手順を示しています。これらの手順は REST API 呼び出しを反映しています。SDK の同等の手順については、 キュー オペレーション(Connector SDK)をご覧ください。
- コンテンツ コネクタは
items.pushを使用して、メタデータとハッシュをキューに push します。- コネクタに push
typeまたはcontentHashが含まれている場合、Cloud Search はステータスを決定します。 - 不明なアイテムには
NEW_ITEMステータスが割り当てられます。 - ハッシュが一致する既存のアイテムは
ACCEPTEDのままになります。 - ハッシュが異なる既存のアイテムは
MODIFIEDになります。
- コネクタに push
- コネクタは
items.pollを使用して、インデックスに登録するアイテムを決定します。Cloud Search はアイテムを優先度順に返します。 - コネクタはリポジトリからアイテムを取得し、インデックス API リクエストを作成します。
- コネクタは
items.indexを使用してアイテムをインデックスに登録します。アイテムは、処理が成功するとACCEPTED状態になります。
アイテムを削除する
全走査 戦略 では、2 つのキューを使用してアイテムのインデックス登録と削除の検出を行います。図 2 は、この戦略の 2 回目の走査を示しています。
- 最初の走査で、コネクタはアイテムを「キュー A」に
NEW_ITEMとして push します。各アイテムにはラベル「A」が付けられます。 - コネクタはキュー A をポーリングし、アイテムをインデックスに登録します。
- 2 回目の全走査で、コネクタはアイテムを「キュー B」に push します。
- 不明なアイテムにはラベル「B」とステータス
NEW_ITEMが割り当てられます。 - ハッシュが一致する既存のアイテムはラベルが「B」に変更され、
ACCEPTEDのままになります。 - ハッシュが異なる既存のアイテムはラベルが「B」に変更され、
MODIFIEDになります。
- 不明なアイテムにはラベル「B」とステータス
- コネクタはキュー B をポーリングし、アイテムをインデックスに登録します。
- 最後に、コネクタは
deleteQueueItemsキュー A で呼び出します。これにより、ラベル「A」が残っている以前にインデックスに登録されたアイテムがすべて削除されます。 - 以降の走査では、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 ステータスのエントリが追加されます。
オプションのペイロードはポーリング時に返されます。
ポーリングされたアイテムは予約 され、他のポーリング呼び出しでは返されません。type が NOT_MODIFIED、REPOSITORY_ERROR、または REQUEUE に設定された Items.push を使用すると、エントリの予約が解除 されます。
ハッシュを含む Items.push
push リクエストでメタデータまたはコンテンツ ハッシュを指定します。
Cloud Search は、これらを保存された値と比較します。一致しない場合、エントリは MODIFIED になります。存在しない ID が一致しない場合は、NEW_ITEM になります。
Items.poll
このメソッドは、優先度の高いエントリを取得します。返される各エントリは、タイムアウトするか、インデックスに再登録されるか、Items.push を使用して予約が解除されるまで予約されます。