卸除並重建 Azure AI 搜尋服務中的索引

本文會說明如何卸除和重建 Azure AI 搜尋服務索引。 包含需要重建的情況,並提供可降低重建對進行中查詢要求影響的建議。 如果您經常需要重建,建議您使用索引別名,以便更輕鬆地交換應用程式所指向的索引。

在活躍開發期間,當您在反覆設計索引時,通常會卸載並重建索引。 大部分的開發人員會使用其資料的小型代表性範例,以便加快重新編製索引的速度。

需要重建的修改

下表列出需要將索引卸除和重建的修改。

動作 描述
刪除欄位 若要實體上移除欄位的所有追蹤,您必須重建索引。 若無法立即重建,您可以修改應用程式的程式碼以重新導向對於已淘汰欄位的存取,或使用 searchFields選取查詢參數來選擇要搜尋和傳回的欄位。 實體上,在您下次套用省略問題欄位的結構描述重建之前,欄位定義和內容都會保留在索引中。
變更欄位定義 修改欄位名稱、資料類型或特定索引屬性 (可搜尋、可篩選、可排序、可面向化) 需要完整重建。
將分析器指派給欄位 分析器會在索引中定義、指派給欄位,然後在編製索引期間叫用以指示令牌的建立方式。 您可以隨時將新分析器定義新增至索引,但當欄位建立後,您只能指派分析器。 這適用於 analyzerindexAnalyzer 屬性。 searchAnalyzer 屬性是例外狀況 (您可以將此屬性指派給現有欄位)。
更新或刪除索引中的分析器定義 您無法刪除或變更索引中的現有分析器組態 (分析器、權杖化工具、權杖篩選器或 char 篩選器),除非您重建整個索引。
將欄位新增至建議工具 如果已有欄位存在,且您想要將它新增至建議工具建構中,請重建索引。
切換階層 不支援就地升級。 如果您需要更多容量,請建立新的服務,並徹底重建您的索引。 為了協助將此程序自動化,您可以使用這個 Azure AI 搜尋服務 .NET 範例存放庫中的 index-backup-restore 範例程式碼。 此應用程式會將您的索引備份到一系列 JSON 檔案,然後在您指定的搜尋服務中重新建立索引。

不需要重建需求的修改

您還可以進行許多其他修改,而不會影響現有的實體結構。 具體來說,下列變更不需要重建索引。 針對這些變更,您可以使用變更來更新現有的索引定義

  • 新增欄位
  • 在現有欄位上設定 [retrievable] 屬性
  • 在具有現有 indexAnalyzer 的欄位上更新 searchAnalyzer
  • 在索引中新增分析器定義 (可套用至新欄位)
  • 新增、更新或刪除評分設定檔
  • 新增、更新或刪除 CORS 設定
  • 新增、更新或刪除 synonymMaps
  • 新增、更新或刪除語意設定

當您新增新的欄位時,現有已編製索引的文件會為新欄位提供 Null 值。 未來重新整理資料時,來自外部來源資料的值會取代 Azure AI 搜尋服務所加入的 Null。 如需有關更新索引內容的詳細資訊,請參閱新增、更新或刪除文件 \(英文\)。

如何重建索引

在開發期間,索引結構描述會經常變更。 您可以藉由使用具有代表性的小型資料集,建立可快速刪除、重新建立和重新載入的索引,來對此進行規劃。

對於已經在生產環境中的應用程式,我們建議您建立與現有索引並存執行的新索引,以避免查詢停機時間。 應用程式的程式碼會提供新索引的重新導向。

  1. 檢查空間。 搜尋服務受限於索引數目上限,依服務層級而不同。 請確認您有足夠空間容納第二個索引。

  2. 判斷是否需要重建。 如果您只是要新增欄位,或變更索引中與欄位無關的某些部分,則可以直接更新定義,而不必刪除、重新建立並完整重新載入索引。

  3. 如果您需要索引定義以供日後參考,請取得索引定義

  4. 假使您未並存執行新舊索引,請卸除現有索引

    目標是該索引的任何查詢都會立即被卸除。 請記住,刪除索引是無法復原的動作,這樣會終結欄位集合和其他建構的實體儲存體。 在卸除前,請先停下來想想其影響。

  5. 建立經過修訂的索引,讓要求的主體包含經過變更或修改的欄位定義。

  6. 使用來自外部來源的文件載入索引 \(英文\)。

當您建立索引時,系統會針對索引結構描述中的每個欄位配置實體儲存體,並為每個可搜尋欄位建立反向索引。 不可搜尋的欄位可用於篩選條件或運算式中,但不會有反向索引且不是可全文或模糊搜尋。 在重建的索引上,這些反向索引會被刪除並根據您提供的索引結構描述來重新建立。

當您載入索引時,每個欄位的反向索引都會填入來自每個文件的唯一 Token 化文字,且包含相對應文件識別碼的對應。 例如,編製旅館資料集的索引時,為 City 欄位建立的反向索引可能會包含 Seattle、Portland 等字詞。 City 欄位中包含 Seattle、Portland 之文件的文件識別碼會列在字詞旁邊。 在進行任何新增、更新或刪除 \(英文\) 作業時,字詞和文件識別碼也會隨之更新。

平衡工作負載

索引不會在背景中執行,但搜尋服務會針對進行中的查詢平衡任何索引編製作業。 在索引編製期間,您可以在入口網站中監視查詢要求,以確保查詢會及時完成。

如果為工作負載編製索引會產生令人無法接受的查詢延遲程度,請進行效能分析,並檢閱這些效能秘訣以便能降低風險。

檢查更新

第一個文件載入之後,您就可以開始查詢索引。 如果您知道文件的別碼,查閱文件 REST API \(英文\) 可傳回特定文件。 若要進行更廣泛的測試,您應該等到索引完全載入,然後使用查詢來確認您預期會看到的內容。

您可以使用 搜尋總管REST 用戶端 來檢查更新的內容。

如果您已新增或重新命名欄位,請使用 $select 來傳回該欄位:search=*&$select=document-id,my-new-field,some-old-field&$count=true

另請參閱