Connector SDK 和 Cloud Search API 支援建立 Cloud Search 索引佇列。這些佇列的用途包括:
- 維護每個文件的狀態 (狀態、雜湊等),讓索引保持同步。
- 維護在遍歷期間發現的待索引項目清單。
- 根據狀態決定項目優先順序。
- 維護檢查點和變更權杖等狀態資訊。
佇列是指指派給已建立索引項目的標籤 (例如「default」)。
狀態和優先順序
文件的優先順序取決於其ItemStatus程式碼。可能代碼 (依優先順序排列,由高至低):
ERROR:項目發生非同步錯誤,需要重新建立索引。MODIFIED:項目先前已建立索引,但存放區中的項目已變更。NEW_ITEM:該項目尚未建立索引。ACCEPTED:項目先前已建立索引,且未變更。
如果項目狀態相同,系統會優先處理在佇列中等待最久的項目。
為新項目或變更項目建立索引
圖 1 顯示使用索引佇列為新項目或變更項目建立索引的步驟。這些步驟反映了 REST API 呼叫;如需 SDK 對應項目,請參閱「佇列作業 (Connector SDK)」。

- 內容連接器會使用
items.push將中繼資料和雜湊值推送到佇列。- 如果連接器包含推送
type或contentHash,Cloud Search 會判斷狀態。 - 狀態不明的項目會顯示
NEW_ITEM狀態。 - 如果現有項目具有相符的雜湊值,則會維持
ACCEPTED。 - 雜湊值不同的現有項目會變成
MODIFIED。
- 如果連接器包含推送
- 連接器會使用
items.poll判斷要為哪些項目建立索引。Cloud Search 會依優先順序傳回項目。 - 連接器會從存放區擷取項目,並建構索引 API 要求。
- 連接器會使用
items.index為項目建立索引。項目成功處理後,就會進入ACCEPTED狀態。
刪除項目
完整遍歷策略會使用兩個佇列來為項目建立索引及偵測刪除作業。圖 2 顯示這項策略的第二次遍歷。

- 在初始遍歷時,連接器會將項目推送至「佇列 A」,如
NEW_ITEM所示。每個項目都會收到「A」標籤。 - 連接器會輪詢佇列 A 並為項目建立索引。
- 在第二次完整遍歷時,連接器會將項目推送到「佇列 B」。
- 不明項目會收到「B」標籤和
NEW_ITEM狀態。 - 如果現有項目與雜湊值相符,系統會將標籤變更為「B」,並保留在
ACCEPTED。 - 如果現有項目的雜湊值不同,標籤會變更為「B」,並成為
MODIFIED。
- 不明項目會收到「B」標籤和
- 連接器會輪詢佇列 B 並為項目建立索引。
- 最後,連接器會在佇列 A 上呼叫
deleteQueueItems。這會刪除所有先前建立索引,且仍有「A.」標籤的項目。 - 後續的遍歷會交換這兩個佇列的角色。
佇列作業 (Connector SDK)
使用 pushItems 建構工具推送項目。SDK 會使用 Repository 類別的 getDoc 方法,自動從佇列中依優先順序提取項目。
佇列作業 (REST API)
- 如要推送:請使用
Items.push。 - 如要進行意見調查,請使用
Items.poll。
您也可以使用 Items.index 在建立索引期間推送項目。這些項目會自動進入「已完成」ACCEPTED狀態。
Items.push
這個方法會將 ID 新增至佇列。結果由
type
決定。推送新 ID 會新增狀態為 NEW_ITEM 的項目。
輪詢期間會傳回選用酬載。
輪詢項目會保留,無法透過其他輪詢呼叫傳回。使用 Items.push 並將 type 設為 NOT_MODIFIED、REPOSITORY_ERROR 或 REQUEUE,即可取消預訂項目。
使用雜湊的 Items.push
在推送要求中指定中繼資料或內容雜湊。Cloud Search 會將這些值與儲存的值進行比較。如果兩者不相符,項目會變成 MODIFIED。不存在的不相符 ID 會變成 NEW_ITEM。
Items.poll
這個方法會擷取高優先順序項目。每個傳回的項目都會保留,直到逾時、重新建立索引或使用 Items.push 取消保留為止。