共用方式為


在 Azure AI 搜尋服務中排程索引子

當您設定 schedule 屬性時,索引子可以設定為依排程執行。 索引子排程很有用的一些情況包括:

  • 來源資料會隨著時間變更,而您想要索引子自動處理差異。
  • 來源資料非常大,您需要週期性排程才能編製所有內容的索引。
  • 索引涵蓋多個來源、使用多個索引子,且您想要錯開作業以減少衝突。

一般 2 小時處理時間範圍中無法完成編制索引時,您可以排程索引子以 2 小時頻率執行,藉此處理大量資料。 只要您的資料來源支援變更偵測邏輯,索引子在每次執行時便可自動從上次結束的位置繼續。

索引子排程後便會一直維持在排程上,直到您清除間隔或開始時間,或是將 disabled 設為 true 為止。 當沒有任何可處理的資料時,讓索引子保留在排程中不會影響系統效能。 檢查變更的內容是相對快速的作業。

必要條件

  • 使用資料來源和索引設定的有效索引子。

  • 資料來源中的變更偵測。 Azure 儲存體和 SharePoint 已內建變更偵測。 必須手動啟用其他資料來源,例如 Azure SQLAzure Cosmos DB

排程定義

排程是索引子定義的一部分。 如果省略 schedule 屬性,則索引子只會依需求執行。 此屬性具有兩個部分。

屬性 說明
"interval" (必要) 兩個連續索引子開始執行的時間量。 允許的最小間隔為 5 分鐘,最長為 1440 分鐘 (24 小時)。 其必須格式化為 XSD "dayTimeDuration" 值 ( ISO 8601 持續時間 值的受限子集)。

其模式為:P(nD)(T(nH)(nM))

範例:PT15M 代表每隔 15 分鐘,PT2H 代表每隔兩個小時。
"startTime" (選擇性) 開始時間是以國際標準時間 (UTC) 來指定。 如果省略,則會使用目前的時間。 開始時間可以設定為過去的時間,在這種情況下,可以假設索引子從原始開始時間已持續執行一段時間,以排定第一次執行的時間。

下列範例是一個排程,從 1 月 1 日午夜開始,每隔兩小時執行一次。

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

設定排程

排程是在索引子定義中指定的。 若要設定排程,您可以使用 Azure 入口網站、REST API 或 Azure SDK。

  1. 登入 Azure 入口網站並開啟搜尋服務頁面。
  2. 在左側瀏覽窗格中,選取 [索引子]
  3. 開啟索引子。
  4. 選取設定
  5. 向下捲動至 [排程],然後選擇 [每小時]、[每日] 或 [自訂] 來設定特定的日期、時間或自訂間隔。

切換至索引頂端的 [索引子定義 (JSON)] 索引標籤,可檢視 XSD 格式的排程定義。

排程行為常見問題

我可以平行執行多個索引器作業嗎?

您可以同時執行多個索引器,但每個索引器都是單一實例。 您無法同時執行相同索引子的兩個複本。

針對以文字為基礎的索引編製,排程器可以啟動搜尋服務所支援的索引器作業數目,而搜尋單位數目決定。 例如,如果服務具有三個複本和四個分割區,您可以在作用中執行內包含 12 個索引子作業,無論是視需要起始還是依排程起始都一樣。

針對以技能為基礎的索引編製,索引器會在特定的 執行環境中執行。 基於這個原因,服務單位數目與您可以執行的技能型索引子作業數目沒有任何關系。 多個技能型索引器可以平行執行,但這樣做取決於執行環境中的內容處理器可用性。

排程的工作一律會在指定的時間開始嗎?

索引器進程可以排入佇列,而且可能不會在張貼時完全啟動,視處理工作負載和其他因素而定。 例如,如果索引器在設定為開始下一個排程執行時仍執行,暫止的執行會延後到下一個排程的發生,讓目前的作業完成。

讓我們參考一個範例,讓您更具體了解詳情。 假設我們設定索引子排程,其間隔為每小時,開始時間為 2024 年 1 月 1 日上午 8:00:00 UTC。 以下是索引子執行若超過一小時,可能發生的情況:

  1. 第一次索引子執行於或約於 2024年 1 月 1 日上午 8:00 UTC 開始。 假設此執行需要 20 分鐘 (或少於 1 小時的時間量)。

  2. 第二次執行開始於 2024 年 1 月 1 日上午 9:00 UTC 左右。 假設此執行需要 70 分鐘 (超過一小時),而且不會完成,直到上午 10:10 UTC。

  3. 第三次執行排程為從上午 10:00 UTC 開始,但先前的執行當時仍在執行中。 然後會略過此排程的執行。 索引子的下一次執行將不會開始,直到上午 11:00 UTC。

注意

如果您有時間敏感的嚴格索引器執行需求,您應該考慮使用 推送 API 模型 ,以便直接控制編製索引管線。

如果在同一份文件上重複編製索引失敗,會發生什麼事?

如果索引子設定為特定排程,但每次都在同一份文件上重覆失敗,則索引子會以較不頻繁的間隔開始執行 (最大間隔為至少每 2 小時或 24 小時一次,取決於不同的實作因素) 直到再次順利推進為止。 如果您認為您已修正基礎問題,您可以 手動執行索引器,如果索引編製成功,索引器會回到其一般排程。

下一步

針對依排程執行的索引子,您可以從搜尋服務擷取狀態來監視作業,或啟用資源記錄來取得詳細資訊。