卸除並重建 Azure AI 搜尋服務中的索引
本文會說明如何卸除和重建 Azure AI 搜尋服務索引。 包含需要重建的情況,並提供可降低重建對進行中查詢要求影響的建議。 如果您經常需要重建,建議您使用索引別名,以便更輕鬆地交換應用程式所指向的索引。
在活躍開發期間,當您在反覆設計索引時,通常會卸載並重建索引。 大部分的開發人員會使用其資料的小型代表性範例,以便加快重新編製索引的速度。
需要重建的修改
下表列出需要將索引卸除和重建的修改。
動作 | 描述 |
---|---|
刪除欄位 | 若要實體上移除欄位的所有追蹤,您必須重建索引。 若無法立即重建,您可以修改應用程式的程式碼以重新導向對於已淘汰欄位的存取,或使用 searchFields 並選取查詢參數來選擇要搜尋和傳回的欄位。 實體上,在您下次套用省略問題欄位的結構描述重建之前,欄位定義和內容都會保留在索引中。 |
變更欄位定義 | 修改欄位名稱、資料類型或特定索引屬性 (可搜尋、可篩選、可排序、可面向化) 需要完整重建。 |
將分析器指派給欄位 | 分析器會在索引中定義、指派給欄位,然後在編製索引期間叫用以指示令牌的建立方式。 您可以隨時將新分析器定義新增至索引,但當欄位建立後,您只能指派分析器。 這適用於 analyzer 和 indexAnalyzer 屬性。 searchAnalyzer 屬性是例外狀況 (您可以將此屬性指派給現有欄位)。 |
更新或刪除索引中的分析器定義 | 您無法刪除或變更索引中的現有分析器組態 (分析器、權杖化工具、權杖篩選器或 char 篩選器),除非您重建整個索引。 |
將欄位新增至建議工具 | 如果已有欄位存在,且您想要將它新增至建議工具建構中,請重建索引。 |
切換階層 | 不支援就地升級。 如果您需要更多容量,請建立新的服務,並徹底重建您的索引。 為了協助將此程序自動化,您可以使用這個 Azure AI 搜尋服務 .NET 範例存放庫中的 index-backup-restore 範例程式碼。 此應用程式會將您的索引備份到一系列 JSON 檔案,然後在您指定的搜尋服務中重新建立索引。 |
不需要重建需求的修改
您還可以進行許多其他修改,而不會影響現有的實體結構。 具體來說,下列變更不需要重建索引。 針對這些變更,您可以使用變更來更新現有的索引定義。
- 新增欄位
- 在現有欄位上設定 [retrievable] 屬性
- 在具有現有 indexAnalyzer 的欄位上更新 searchAnalyzer
- 在索引中新增分析器定義 (可套用至新欄位)
- 新增、更新或刪除評分設定檔
- 新增、更新或刪除 CORS 設定
- 新增、更新或刪除 synonymMaps
- 新增、更新或刪除語意設定
當您新增新的欄位時,現有已編製索引的文件會為新欄位提供 Null 值。 未來重新整理資料時,來自外部來源資料的值會取代 Azure AI 搜尋服務所加入的 Null。 如需有關更新索引內容的詳細資訊,請參閱新增、更新或刪除文件 \(英文\)。
如何重建索引
在開發期間,索引結構描述會經常變更。 您可以藉由使用具有代表性的小型資料集,建立可快速刪除、重新建立和重新載入的索引,來對此進行規劃。
對於已經在生產環境中的應用程式,我們建議您建立與現有索引並存執行的新索引,以避免查詢停機時間。 應用程式的程式碼會提供新索引的重新導向。
檢查空間。 搜尋服務受限於索引數目上限,依服務層級而不同。 請確認您有足夠空間容納第二個索引。
判斷是否需要重建。 如果您只是要新增欄位,或變更索引中與欄位無關的某些部分,則可以直接更新定義,而不必刪除、重新建立並完整重新載入索引。
如果您需要索引定義以供日後參考,請取得索引定義。
假使您未並存執行新舊索引,請卸除現有索引。
目標是該索引的任何查詢都會立即被卸除。 請記住,刪除索引是無法復原的動作,這樣會終結欄位集合和其他建構的實體儲存體。 在卸除前,請先停下來想想其影響。
建立經過修訂的索引,讓要求的主體包含經過變更或修改的欄位定義。
使用來自外部來源的文件載入索引 \(英文\)。
當您建立索引時,系統會針對索引結構描述中的每個欄位配置實體儲存體,並為每個可搜尋欄位建立反向索引。 不可搜尋的欄位可用於篩選條件或運算式中,但不會有反向索引且不是可全文或模糊搜尋。 在重建的索引上,這些反向索引會被刪除並根據您提供的索引結構描述來重新建立。
當您載入索引時,每個欄位的反向索引都會填入來自每個文件的唯一 Token 化文字,且包含相對應文件識別碼的對應。 例如,編製旅館資料集的索引時,為 City 欄位建立的反向索引可能會包含 Seattle、Portland 等字詞。 City 欄位中包含 Seattle、Portland 之文件的文件識別碼會列在字詞旁邊。 在進行任何新增、更新或刪除 \(英文\) 作業時,字詞和文件識別碼也會隨之更新。
平衡工作負載
索引不會在背景中執行,但搜尋服務會針對進行中的查詢平衡任何索引編製作業。 在索引編製期間,您可以在入口網站中監視查詢要求,以確保查詢會及時完成。
如果為工作負載編製索引會產生令人無法接受的查詢延遲程度,請進行效能分析,並檢閱這些效能秘訣以便能降低風險。
檢查更新
第一個文件載入之後,您就可以開始查詢索引。 如果您知道文件的別碼,查閱文件 REST API \(英文\) 可傳回特定文件。 若要進行更廣泛的測試,您應該等到索引完全載入,然後使用查詢來確認您預期會看到的內容。
您可以使用 搜尋總管 或 REST 用戶端 來檢查更新的內容。
如果您已新增或重新命名欄位,請使用 $select 來傳回該欄位:search=*&$select=document-id,my-new-field,some-old-field&$count=true