Connector SDK 和 Google Cloud Search API 可讓使用者建立 Cloud Search 用於執行下列工作的索引建立作業佇列:
保留每份文件的狀態 (狀態、雜湊值等), 讓索引與存放區保持同步
維護要在周遊期間找到的項目清單 上傳資料集之後,您可以運用 AutoML 自動完成部分資料準備工作
根據項目狀態,決定佇列中項目的優先順序。
保留其他狀態資訊,以便有效整合,例如: 檢查點、變更符記等
佇列是指派給索引項目的標籤,例如「default」的 預設佇列或「B」佇列
狀態與優先順序
佇列中的文件優先順序取決於文件的
ItemStatus
再也不是件繁重乏味的工作可能原因如下
ItemStatus
代碼依優先順序排列 (最先處理完):
ERROR
- 索引建立項目時發生非同步錯誤 因此必須重新建立索引MODIFIED
- 先前已建立索引,但後來修改的項目 從上次建立索引以來 建立了存放區NEW_ITEM
- 未建立索引的項目。ACCEPTED
- 先前已建立索引,且 上次建立索引後 產生 Cloud Storage 存放區
如果佇列中的兩個項目狀態相同,系統就會對 已排入佇列最久的項目。
概略說明如何使用索引佇列為新項目或變更項目建立索引
圖 1 顯示使用索引為新項目或變更項目建立索引的步驟 佇列。下列步驟會顯示 REST API 呼叫。如需對等 SDK 呼叫,請參閱 佇列作業 (Connector SDK):
![Google Cloud Search 索引總覽](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-add.png?authuser=0000&hl=zh-tw)
內容連接器會使用
items.push
將項目 (中繼資料和雜湊) 推送到索引佇列,以建立該項目的 狀態 (MODIFIED
、NEW_ITEM
、DELETED
)。詳細說明:- 推送時,連接器會明確包含推送
type
或contentHash
。 - 如果連接器不包含
type
,則代表 Cloud Search 會自動使用contentHash
來判斷項目狀態。 - 如果該項目不明,則會設為
NEW_ITEM
。 - 如果項目存在且雜湊值相符,狀態將保留為
ACCEPTED
。 - 如果項目存在且雜湊不同,狀態會變成
MODIFIED
。
如要進一步瞭解項目狀態的建立方式,請參閱 傳播 GitHub 存放區 範例程式碼 Cloud Search 入門指南。
推送作業通常與內容週遊和/或變更偵測有關 更新連接器中的資料。
- 推送時,連接器會明確包含推送
內容連接器會使用
items.poll
輪詢佇列來決定要建立索引的項目。Cloud Search 會通知連接器 哪些項目最需要建立索引,先依據狀態碼排序 依佇列時間排序連接器會從存放區擷取這些項目並建構索引 API 要求。
連接器會使用
items.index
來為項目建立索引項目只會在 Cloud Search 後進入ACCEPTED
狀態 已成功完成項目的處理。
連接器也可以刪除已不存在於存放區的項目。 如未修改或再次推送任何項目 原始碼存放區錯誤。如要瞭解項目刪除作業的相關資訊,請參閱後續章節 專區。
概略說明如何使用索引佇列刪除項目
全週遊策略 使用兩佇列程序為項目建立索引 以及偵測刪除情形圖 2 顯示使用兩個 索引建立佇列具體來說,圖 2 顯示了第二個週遊 使用全週遊策略這些步驟使用 REST API 呼叫。適用對象 相當於 SDK 呼叫的佇列作業 (Connector SDK)。
![Google Cloud Search 索引總覽](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-delete.png?authuser=0000&hl=zh-tw)
初始週遊時,內容連接器會使用
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
狀態 已成功完成項目的處理。最後
deleteQueueItems
會在佇列 A 上呼叫 ,以刪除先前建立索引的所有 CCloud Search 項目 仍會包含「A」佇列標籤。透過後續的完整週遊程序,將用於建立索引的佇列 並更換用於刪除的佇列
佇列作業 (Connector SDK)
Content Connector SDK 提供將項目推送和提取作業的作業 已將項目從佇列中取得
如要封裝項目並推送至佇列,請使用 pushItems
建構工具類別
您不需要執行任何特別從佇列提取項目
和資料處理之間相反地,SDK 會按照優先順序自動從佇列中提取項目
順序,並使用
Repository 類別的
getDoc
方法。
佇列作業 (REST API)
REST API 提供下列兩種將項目推送至和 從佇列提取項目:
- 如要將項目推送至佇列,請使用
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 Indexing 佇列會比較
與
做為資料來源如果不相符,該項目會標示為 MODIFIED
。如果相對應的
索引沒有項目,則狀態為 NEW_ITEM
。
Items.poll
Items.poll 方法會從佇列中擷取優先順序最高的項目。請求和 傳回的狀態值會指出 要求的優先佇列,或傳回 ID 的狀態。
根據預設,系統可能會依據下列依據
優先順序。每個傳回的項目都由系統保留,不會由其他項目傳回
通話
Items.poll
直到滿足以下任一情況:
- 預訂逾時。
- 項目會由
Items.index
再次排入佇列。 Items.push
是以type
NOT_MODIFIED
、REPOSITORY_ERROR
或REQUEUE
的值。