Share via


Ablegen und Neuerstellen eines Indexes in Azure KI Search

In diesem Artikel wird erläutert, wie Sie einen Azure KI Search-Index ablegen und neu erstellen. Es werden die Umstände erläutert, unter denen eine Neuerstellung erforderlich ist. Außerdem werden Empfehlungen bereitgestellt, wie die Auswirkungen von Neuerstellungen auf laufende Abfrageanforderungen auf ein Mindestmaß reduziert werden können. Wenn Sie häufig neu erstellen müssen, wird empfohlen, Indexaliase zu verwenden, um den Austausch des Indexes zu vereinfachen, auf den Ihre Anwendung verweist.

Während der aktiven Entwicklung ist es üblich, Indizes abzulegen und neu zu erstellen, wenn Sie den Indexentwurf durchlaufen. Die meisten Entwickler arbeiten mit einem kleinen repräsentativen Beispiel ihrer Daten, um die Neuindizierung zu beschleunigen.

Änderungen, die eine Neuerstellung erfordern

In der folgenden Tabelle sind die Änderungen aufgeführt, für die eine Indextrennung und -neuerstellung erforderlich ist.

Aktion Beschreibung
Löschen eines Felds Um alle Spuren eines Felds physisch entfernen zu können, müssen Sie den Index neu erstellen. Wenn eine sofortige Neuerstellung nicht praktikabel ist, können Sie den Anwendungscode so ändern, dass der Zugriff von einem veralteten Feld weggeleitet wird, oder die searchFields verwenden und Abfrageparameter auswählen, um auszuwählen, welche Felder durchsucht und zurückgegeben werden. Die Felddefinition und die Inhalte bleiben physisch bis zur nächsten Neuerstellung im Index, wenn Sie ein Schema verwenden, bei dem das betreffende Feld ausgelassen wird.
Ändern einer Felddefinition Für Überarbeitungen eines Feldnamens, Datentyps oder spezifischer Indexattribute (durchsuchbar, filterbar, sortierbar, facettenreich) ist eine vollständige Neuerstellung erforderlich.
Zuweisen eines Analysetools zu einem Feld Analyzers werden in einem Index definiert, Feldern zugewiesen und dann während der Indizierung aufgerufen, um zu informieren, wie Token erstellt werden. Sie können einem Index jederzeit eine neue Analysetooldefinition hinzufügen, aber Sie können ein Analysetool nur zuweisen, wenn das Feld erstellt wird. Dies gilt sowohl für das Analysetool als auch die indexAnalyzer-Eigenschaften. Die searchAnalyzer-Eigenschaft ist eine Ausnahme (Sie können diese Eigenschaft einem vorhandenen Feld zuweisen).
Aktualisieren oder Löschen einer Analysetooldefinition in einem Index Sie können eine bestehende Analysetoolkonfiguration (Analysetool, Tokenizer, Tokenfilter oder Zeichenfilter) im Index nicht löschen oder ändern, es sei denn, Sie erstellen den gesamten Index neu.
Hinzufügen eines Felds zu einer Vorschlagsfunktion Wenn ein Feld bereits vorhanden ist, und Sie es einer Vorschlagsfunktion hinzufügen möchten, müssen Sie den Index neu erstellen.
Wechseln zwischen Ebenen Direkte Upgrades werden nicht unterstützt. Wenn Sie mehr Kapazität benötigen, erstellen Sie einen neuen Dienst erstellen und Ihre Indizes von Grund auf neu. Um diesen Prozess zu automatisieren, können Sie den index-backup-restore-Beispielcode in diesem Azure KI Search .NET-Beispielrepository verwenden. Diese App sichert Ihren Index in einer Reihe von JSON-Dateien und erstellt ihn dann in einem Suchdienst, den Sie angeben, neu.

Änderungen ohne Neuerstellungsanforderung

Viele weitere Änderungen können ohne Auswirkungen auf die vorhandenen physischen Strukturen vorgenommen werden. Insbesondere ist für die folgenden Änderungen keine Indexneuerstellung erforderlich. Für diese Änderungen können Sie eine vorhandene Indexdefinition entsprechend aktualisieren.

  • Hinzufügen eines neuen Felds
  • Festlegen des Attribut Abrufbar für ein vorhandenes Feld
  • Aktualisieren von searchAnalyzer für ein Feld mit einem vorhandenen indexAnalyzer-Element
  • Hinzufügen einer neuen Analysedefinition in einem Index (die auf neue Felder angewendet werden kann)
  • Hinzufügen, Aktualisieren oder Löschen von Bewertungsprofilen
  • Hinzufügen, Aktualisieren oder Löschen von CORS-Einstellungen
  • Hinzufügen, Aktualisieren oder Löschen von synonymMaps
  • Hinzufügen, Aktualisieren oder Löschen von semantischen Konfigurationen

Wenn Sie ein neues Feld hinzufügen, erhalten vorhandene indizierte Dokumente einen NULL-Wert für das neue Feld. Bei einer späteren Datenaktualisierung ersetzen Werte aus externen Quelldaten die von Azure KI Search hinzugefügten NULL-Werte. Weitere Informationen zum Aktualisieren von Indexinhalten finden Sie unter Hinzufügen, Aktualisieren oder Löschen von Dokumenten.

Neuerstellen eines Indexes

Während der Entwicklung ändert sich das Indexschema häufig. Sie können dies einplanen, indem Sie Indizes mit einem kleinen repräsentativen Datensatz erstellen, die schnell gelöscht, neu erstellt und wieder geladen werden können.

Für Anwendungen, die bereits in der Produktion eingesetzt werden, empfiehlt sich die Erstellung eines neuen Indexes, der parallel zu einem vorhandenen Index ausgeführt wird, um eine Downtime von Abfragen zu vermeiden. Ihr Anwendungscode ermöglicht die Umleitung auf den neuen Index.

  1. Überprüfen des Speicherplatzes. Suchdienste unterliegen maximalen Anzahl von Indizes, variierend nach Dienstebene. Stellen Sie sicher, dass Sie Platz für einen zweiten Index haben.

  2. Bestimmen Sie, ob eine Neuerstellung erforderlich ist. Wenn Sie nur Felder hinzufügen oder einen Teil des Indexes ändern, der nicht mit Feldern zusammenhängt, können Sie die Definition möglicherweise einfach aktualisieren, ohne sie zu löschen, neu zu erstellen und vollständig neu zu laden.

  3. Rufen Sie eine Indexdefinition ab, falls Sie zukünftig darauf verweisen müssen.

  4. Löschen Sie den vorhandenen Index, vorausgesetzt, dass Sie nicht parallel neue und alte Indizes ausführen.

    Alle Abfragen, die sich an diesen Index richten, werden sofort gelöscht. Denken Sie daran, dass das Löschen eines Indexes nicht rückgängig gemacht werden kann. Der physische Speicher für die Feldsammlung und andere Konstrukte wird zerstört. Bedenken Sie vor dem Löschen in Ruhe die Auswirkungen.

  5. Erstellen Sie einen überarbeiteten Index, wobei der Text der Anforderung geänderte oder modifizierte Felddefinitionen enthält.

  6. Laden Sie den Index mit Dokumenten aus einer externen Quelle.

Bei der Indexerstellung wird für jedes Feld im Indexschema physischer Speicher zugewiesen, und für jedes durchsuchbare Feld wird ein invertierter Index erstellt. Nicht durchsuchbare Felder können in Filtern oder Ausdrücken verwendet werden, besitzen aber keine invertierten Indizes und können nicht mit der Volltext- oder Fuzzysuche durchsucht werden. Bei einer Indexneuerstellung werden diese invertierten Indizes gelöscht und basierend auf dem von Ihnen angegebenen Indexschema neu erstellt.

Wenn Sie den Index laden, wird der invertierte Index der einzelnen Felder mit allen eindeutigen, mit Token versehenen Wörtern aus den einzelnen Dokumenten aufgefüllt, zusammen mit einer Zuordnung zu entsprechenden Dokument-IDs. Beim Indizieren eines Datasets mit Hotels enthält ein invertierter Index, der für ein Feld „Stadt“ erstellt wurde, beispielsweise Begriffe für Seattle, Portland usw. Bei Dokumenten, die Seattle oder Portland im Feld „Stadt“ enthalten, wird die Dokument-ID neben dem Begriff aufgeführt. Bei jedem Vorgang zum Hinzufügen, Aktualisieren oder Löschen wird die Liste aus Begriffen und Dokument-IDs entsprechend aktualisiert.

Ausgleichen von Workloads

Die Indizierung erfolgt nicht im Hintergrund, aber der Suchdienst gleicht alle Indizierungsaufträge mit laufenden Abfragen aus. Während der Indizierung können Sie Abfrageanforderungen im Portal überwachen, um sicherzustellen, dass die Abfragen innerhalb eines angemessenen Zeitraums abgeschlossen werden.

Wenn die Indizierung von Workloads zu nicht akzeptablen Abfragewartezeiten führt, führen Sie eine Leistungsanalyse durch, und überprüfen Sie diese Leistungstipps auf mögliche Entschärfungen.

Nach Updates suchen

Sie können mit der Abfrage eines Indexes beginnen, sobald das erste Dokument geladen wurde. Wenn Sie die ID eines Dokuments kennen, gibt die REST-API zur Dokumentsuche das jeweilige Dokument zurück. Für umfangreichere Testvorgänge sollten Sie warten, bis der Index vollständig geladen wurde, und anschließend den erwarteten Kontext anhand von Abfragen überprüfen.

Sie können den Suchexplorer oder einen REST-Client verwenden, um nach aktualisierten Inhalten zu suchen.

Wenn Sie ein Feld hinzugefügt oder umbenannt haben, verwenden Sie $select, um dieses Feld zurückzugeben: search=*&$select=document-id,my-new-field,some-old-field&$count=true

Siehe auch