在 Azure AI 搜尋服務中監視索引子狀態和結果

您可以在 Azure 入口網站中或以程式設計方式透過 REST 呼叫或 Azure SDK 監視索引子處理。 除了索引子本身的狀態之外,您還可以檢閱開始和結束時間,以及來自特定執行的詳細錯誤和警告。

使用 Azure 入口網站監視

您可以在搜尋服務 [概觀] 頁面中看到所有索引子的目前狀態。 入口網站頁面會每隔幾分鐘重新整理一次,因此您不會立即看到新索引子執行的辨識項。 選取頁面頂端的 [重新整理],以立即擷取最新的檢視。

Indexers list

狀態 描述
進行中 表示作用中的執行。 入口網站會報告部分資訊。 編製索引進行時,您可以觀看回應中的成功的文件值會成長。 處理大量資料的索引子可能需要很長的時間來執行。 例如,處理數百萬個來源文件的索引子可以執行 24 小時,然後幾乎立即重新開始以從其離開的位置接著執行。 因此,大量索引子的狀態可能一律會在入口網站中指出進行中。 即使索引子執行中,也會提供有關進行中的進度和先前執行的詳細資料。
「成功」 表示執行成功。 如果錯誤數目小於索引子的 [失敗項目數上限] 設定,即使個別文件發生錯誤,索引子執行仍可以成功。
失敗 錯誤數目超過 [失敗項目數上限] 且索引編製已停止。
重設 索引子的內部變更追蹤狀態已重設。 索引子會完整執行、重新整理所有文件,而不只是具有較新時間戳記的文件。

您可以選取清單中的索引子,以查看索引子目前和最近執行的詳細資料。

Indexer summary and execution history

索引子摘要圖表會顯示最近執行中所處理文件數目的圖表。

執行詳細資料清單會顯示最近執行的最多 50 個結果。 在清單中選取執行結果,以查看該執行的特定資料。 這包括其開始和結束時間,以及發生的任何錯誤和警告。

Indexer execution details

如果在執行期間發生文件特定問題,會將其列在 [錯誤] 和 [警告] 欄位中。

Indexer details with errors

某些索引子類型的警告很常見,而且不一定會指出問題。 例如,當影像或 PDF 檔案不包含任何要處理的文字時,使用 Azure AI 服務的索引子可能會報告警告。

如需調查索引子錯誤和警告的詳細資訊,請參閱索引子疑難排解指導

使用 Azure 監視計量監視

Azure AI 搜尋服務是 Azure 監視器中的受監視資源,這表示您可以使用計量瀏覽器來查看索引子處理的文件和技能叫用數目的相關基本計量。 這些計量可用來監視索引子進度和設定警示

計量檢視可以依一組預先定義的維度篩選或分割。

標準名稱 描述 維度 範例使用案例
已處理的文件計數 顯示索引子已處理文件的數目。 資料來源名稱、失敗、索引名稱、索引子名稱、技能集名稱
- 可以參考為輸送量的粗略量值 (索引子在一段時間內處理的文件數目)
- 設定為針對失敗的文件發出警示
技能執行叫用計數 顯示技能叫用的數目。 資料來源名稱、失敗、索引名稱、索引子名稱、技能名稱、技能類型、技能集名稱
- 參考以確保可如預期叫用技能,方法是將技能與技能叫用數目之間的相對叫用數字與文件數目比較。
- 設定為針對失敗的技能叫用發出警示

下列螢幕擷取畫面會顯示服務內索引子在一小時內處理的文件數目,依索引子名稱分割。

Indexer documents processed metric

您也可以設定圖形,以查看相同小時間隔內的技能叫用數目。

Indexer skills invoked metric

使用取得索引子狀態監視 (REST API)

您可以使用取得索引子狀態命令來擷取索引子的狀態和執行歷程記錄:

GET https://[service name].search.windows.net/indexers/[indexer name]/status?api-version=2020-06-30
api-key: [Search service admin key]

回應包含整體索引子的狀態、最後 (或進行中) 的索引子叫用,以及最新的索引子叫用歷程記錄。

{
    "status":"running",
    "lastResult": {
        "status":"success",
        "errorMessage":null,
        "startTime":"2018-11-26T03:37:18.853Z",
        "endTime":"2018-11-26T03:37:19.012Z",
        "errors":[],
        "itemsProcessed":11,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
     },
    "executionHistory":[ {
        "status":"success",
         "errorMessage":null,
        "startTime":"2018-11-26T03:37:18.853Z",
        "endTime":"2018-11-26T03:37:19.012Z",
        "errors":[],
        "itemsProcessed":11,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
    }]
}

執行歷程記錄最多包含 50 個最近的執行,其會以反向時間順序排序 (最新優先)。

請注意,有兩個不同的狀態值。 最上層狀態用於索引子本身。 執行中索引子狀態表示索引子已正確設定且可供執行,而不是目前正在執行。

每個索引子執行也有自己的狀態,指出特定執行是在進行中 (執行中),還是已完成,出現 successtransientFailurepersistentFailure 狀態。

當索引子重設以重新整理其變更追蹤狀態時,會新增具有 Reset 狀態的個別執行歷程記錄項目。

如需狀態碼和索引子監視資料的詳細資訊,請參閱取得索引子狀態

使用 .NET 監視

下列 C# 範例會寫入索引子狀態的相關資訊,以及其對主控台最近 (或進行中) 執行的結果。

static void CheckIndexerStatus(SearchIndexerClient indexerClient, SearchIndexer indexer)
{
    try
    {
        string indexerName = "hotels-sql-idxr";
        SearchIndexerStatus execInfo = indexerClient.GetIndexerStatus(indexerName);

        Console.WriteLine("Indexer has run {0} times.", execInfo.ExecutionHistory.Count);
        Console.WriteLine("Indexer Status: " + execInfo.Status.ToString());

        IndexerExecutionResult result = execInfo.LastResult;

        Console.WriteLine("Latest run");
        Console.WriteLine("Run Status: {0}", result.Status.ToString());
        Console.WriteLine("Total Documents: {0}, Failed: {1}", result.ItemCount, result.FailedItemCount);

        TimeSpan elapsed = result.EndTime.Value - result.StartTime.Value;
        Console.WriteLine("StartTime: {0:T}, EndTime: {1:T}, Elapsed: {2:t}", result.StartTime.Value, result.EndTime.Value, elapsed);

        string errorMsg = (result.ErrorMessage == null) ? "none" : result.ErrorMessage;
        Console.WriteLine("ErrorMessage: {0}", errorMsg);
        Console.WriteLine(" Document Errors: {0}, Warnings: {1}\n", result.Errors.Count, result.Warnings.Count);
    }
    catch (Exception e)
    {
        // Handle exception
    }
}

主控台中的輸出看起來會像這樣:

Indexer has run 18 times.
Indexer Status: Running
Latest run
  Run Status: Success
  Total Documents: 7, Failed: 0
  StartTime: 11:29:31 PM, EndTime: 11:29:31 PM, Elapsed: 00:00:00.2560000
  ErrorMessage: none
  Document Errors: 0, Warnings: 0

請注意,有兩個不同的狀態值。 最上層狀態是索引子本身的狀態。 執行中索引子狀態表示索引子已正確設定且可供執行,而不是目前正在執行。

索引子的每個執行也會有自己的狀態,指出該特定執行正在進行 (執行中),或已完成,出現 SuccessTransientError 狀態。

當索引子重設以重新整理其變更追蹤狀態時,會新增具有 Reset 狀態的個別歷程記錄項目。

下一步

如需狀態碼和索引子監視資訊的詳細資訊,請參閱下列 API 參考: