Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Azure KI-Suche ist über das Azure Portal, REST-APIs und Azure SDKs verfügbar. Es unterstützt auch Foundry IQ, die verwaltete Wissensschicht, die Unternehmensinhalte in wiederverwendbare, berechtigungsfähige Wissensbasen für Agenten im Microsoft Foundry-Portal transformiert.
In diesem Artikel wird erläutert, wie Sie einen vorhandenen Index in Azure KI-Suche mit Schemaänderungen oder Inhaltsänderungen durch inkrementelle Indizierung aktualisieren.
Tipp
Um Dokumente sofort zu aktualisieren, fahren Sie mit dem Aktualisieren von Inhalten fort. Schemaänderungen finden Sie unter Aktualisieren eines Indexschemas.
Voraussetzungen
Ein Azure KI-Suche-Service (beliebige Ebene). Ein Dienst erstellen oder finden Sie eine vorhandene.
Ein vorhandener Suchindex mit Dokumenten. In diesem Artikel wird davon ausgegangen, dass Sie bereits einen Index erstellt und Dokumente geladen haben.
Berechtigungen zum Aktualisieren oder Neuerstellen von Indizes:
- Schlüsselbasierte Authentifizierung: Ein Administrator-API-Schlüssel für Ihren Suchdienst.
- Rollenbasierte Authentifizierung: Rolle "Suchindex-Datenmitwirkender" für Dokumentaktualisierungen oder "Suchdienst-Mitarbeiter" für Schemaänderungen.
Installieren Sie für die SDK-Entwicklung die Azure Search-Clientbibliothek:
- Python: azure-search-documents
- .NET: Azure. Search.Documents
- JavaScript: @azure/Suchdokumente
- Java: azure-search-documents
Tipp
Während der aktiven Entwicklung ist es üblich, Indizes während der Ausarbeitung des Indexentwurfs zu löschen und neu zu erstellen. Arbeiten Sie mit einem kleinen repräsentativen Datenbeispiel zusammen, sodass die Neuindizierung schneller verläuft. Erstellen und testen Sie bei Änderungen des Produktionsschemas einen neuen Index nebeneinander, und verwenden Sie dann einen Indexalias , um Indizes auszutauschen, ohne den Anwendungscode zu ändern.
Aktualisieren von Inhalten
Die inkrementelle Indizierung und Synchronisierung eines Indexes mit Änderungen an Quelldaten ist für die meisten Suchanwendungen von grundlegender Bedeutung. In diesem Abschnitt wird der Workflow zum Hinzufügen, Entfernen oder Überschreiben des Inhalts eines Suchindex über die REST-API erläutert, aber die Azure SDKs bieten entsprechende Funktionen.
Der Textkörper der Anforderung enthält ein oder mehrere Dokumente, die indiziert werden sollen. Im Rahmen der Anfrage ist jedes Dokument im Index:
- Identifiziert durch einen eindeutigen, groß-/kleinschreibungssensitiven Schlüssel.
- Einer Aktion zugeordnet: "upload", "delete", "merge" oder "mergeOrUpload".
- Aufgefüllt mit einer Reihe von Namen-Wert-Paaren für jedes Feld, das Sie hinzufügen oder aktualisieren.
{
"value": [
{
"@search.action": "upload (default) | merge | mergeOrUpload | delete",
"key_field_name": "unique_key_of_document", (key/value pair for key field from index schema)
"field_name": field_value (name/value pairs matching index schema)
...
},
...
]
}
Reference:Documents - Index
Verwenden Sie zunächst die APIs zum Laden von Dokumenten, z. B. Documents - Index (REST) oder einer entsprechenden API im Azure SDKs. Weitere Informationen zu Indizierungstechniken finden Sie unter Laden von Dokumenten.
Für ein großes Update wird die Batchverarbeitung (bis zu 1.000 Dokumente pro Batch oder etwa 16 MB pro Batch, je nachdem, welcher Grenzwert zuerst eintritt) empfohlen und die Indizierungsleistung erheblich verbessert.
Legen Sie den
@search.actionParameter für die API fest, um den Effekt auf vorhandene Dokumente zu bestimmen. Wird für inkrementelle Updates (am häufigsten),mergeOrUploadzum Entfernen von Dokumenten oderdeletefür teilweise Feldaktualisierungen für vorhandene Dokumente verwendetmerge.Aktion Wirkung Löschen Entfernt das gesamte Dokument aus dem Index. Wenn Sie ein einzelnes Feld entfernen möchten, verwenden Sie stattdessen "Zusammenführen", und legen Sie das betreffende Feld auf NULL fest. Gelöschte Dokumente und Felder geben nicht sofort Speicherplatz im Index frei. Alle paar Minuten führt ein Hintergrundprozess den physischen Löschvorgang durch. Unabhängig davon, ob Sie das Azure-Portal oder eine API zum Zurückgeben von Indexstatistiken verwenden, können Sie eine kleine Verzögerung erwarten, bevor der Löschvorgang im Azure Portal und über APIs widerzuspiegeln ist. Weitere Informationen finden Sie unter "Löschen von Dokumenten in einem Suchindex". Zusammenführen Aktualisiert ein bereits vorhandenes Dokument und schlägt fehl, wenn das Dokument nicht gefunden werden kann. Die Zusammenführung ersetzt vorhandene Werte. Stellen Sie daher sicher, dass Sie nach Auflistungsfeldern suchen, die mehrere Werte enthalten, z. B. Felder vom Typ Collection(Edm.String). Wenn beispielsweise eintags-Feld mit dem Wert["budget"]beginnt und Sie eine Zusammenführung mit["economy", "pool"]durchführen, lautet der Wert für dastags-Feld am Ende des Vorgangs["economy", "pool"]. Es wird kein["budget", "economy", "pool"]sein.
Das gleiche Verhalten gilt für komplexe Auflistungen. Wenn das Dokument ein komplexes Auflistungsfeld mit dem Namen "Räume" und einem Wert von[{ "Type": "Budget Room", "BaseRate": 75.0 }]enthält und Sie einen Daten-Merge mit einem Wert von[{ "Type": "Standard Room" }, { "Type": "Budget Room", "BaseRate": 60.5 }]ausführen, wird der Endwert des Felds "Räume"[{ "Type": "Standard Room" }, { "Type": "Budget Room", "BaseRate": 60.5 }]sein. Es werden keine neuen und vorhandenen Werte angefügt oder zusammengeführt.mergeOrUpload Verhält sich wie Zusammenführen, falls das Dokument existiert, und hochladen, falls das Dokument neu ist. Dies ist die häufigste Aktion für inkrementelle Updates. Hochladen Ähnlich wie bei einem "Upsert", bei dem das Dokument eingefügt wird, wenn es neu ist, und aktualisiert oder ersetzt wird, falls es bereits vorhanden ist. Wenn für das Dokument werte fehlen, die der Index erfordert, wird der Wert des Dokumentfelds auf NULL festgelegt.
Abfragen werden während der Indizierung weiterhin ausgeführt, aber wenn Sie vorhandene Felder aktualisieren oder entfernen, sollten Sie gemischte Ergebnisse und eine höhere Inzidenz der Drosselung erwarten.
Hinweis
Es gibt keine Garantien für die Reihenfolge, in der die Aktionen im Anforderungstext ausgeführt werden. Es wird nicht empfohlen, mehrere "Merge"-Aktionen mit demselben Dokument in einem einzigen Anforderungstext zu verknüpfen. Wenn für dasselbe Dokument mehrere "Zusammenführen"-Aktionen erforderlich sind, führen Sie die zusammenführende clientseitige Aktion aus, bevor Sie das Dokument im Suchindex aktualisieren.
Antworten
Statuscode 200 wird für eine erfolgreiche Antwort zurückgegeben, was bedeutet, dass alle Elemente dauerhaft gespeichert wurden und beginnen, indiziert zu werden. Die Indizierung wird im Hintergrund ausgeführt und stellt neue Dokumente (d. h. abfragefähig und durchsuchbar) ein paar Sekunden nach Abschluss des Indizierungsvorgangs zur Verfügung. Die spezifische Verzögerung hängt von der Last des Diensts ab.
Die erfolgreiche Indizierung wird durch die Statuseigenschaft angegeben, die für alle Elemente auf "true" festgelegt wird, sowie die Eigenschaft, die statusCode entweder auf 201 (für neu hochgeladene Dokumente) oder 200 (für zusammengeführte oder gelöschte Dokumente) festgelegt wird:
{
"value": [
{
"key": "unique_key_of_new_document",
"status": true,
"errorMessage": null,
"statusCode": 201
},
{
"key": "unique_key_of_merged_document",
"status": true,
"errorMessage": null,
"statusCode": 200
},
{
"key": "unique_key_of_deleted_document",
"status": true,
"errorMessage": null,
"statusCode": 200
}
]
}
Statuscode 207 wird zurückgegeben, wenn mindestens ein Element nicht erfolgreich indiziert wurde. Elemente, die nicht indiziert wurden, haben das Statusfeld auf "false" festgelegt. Die errorMessage und statusCode Eigenschaften geben den Grund für den Indizierungsfehler an:
{
"value": [
{
"key": "unique_key_of_document_1",
"status": false,
"errorMessage": "The search service is too busy to process this document. Please try again later.",
"statusCode": 503
},
{
"key": "unique_key_of_document_2",
"status": false,
"errorMessage": "Document not found.",
"statusCode": 404
},
{
"key": "unique_key_of_document_3",
"status": false,
"errorMessage": "Index is temporarily unavailable because it was updated with the 'allowIndexDowntime' flag set to 'true'. Please try again later.",
"statusCode": 422
}
]
}
Die errorMessage Eigenschaft gibt den Grund für den Indizierungsfehler an, falls möglich.
In der folgenden Tabelle werden die verschiedenen Statuscodes pro Dokument erläutert, die in der Antwort zurückgegeben werden können. Einige Statuscodes deuten auf Probleme mit der Anforderung selbst hin, während andere auf temporäre Fehlerbedingungen hinweisen. Letzteres sollten Sie nach einer Verzögerung wiederholen.
| Statuscode | Bedeutung | Wiederholungsfähig | Notizen |
|---|---|---|---|
| 200 | Das Dokument wurde erfolgreich geändert oder gelöscht. | n/a | Löschvorgänge sind idempotent. Das heißt, selbst wenn im Index kein Dokumentschlüssel vorhanden ist, führt der Versuch eines Löschvorgangs mit diesem Schlüssel zu einem Statuscode von 200. |
| 201 | Das Dokument wurde erfolgreich erstellt. | n/a | |
| 400 | Im Dokument ist ein Fehler aufgetreten, der verhindert hat, dass es indiziert wird. | Nein | Die Fehlermeldung in der Antwort gibt an, was mit dem Dokument falsch ist. |
| 404 | Das Dokument konnte nicht zusammengeführt werden, da der angegebene Schlüssel nicht im Index vorhanden ist. | Nein | Dieser Fehler tritt nicht für Uploads auf, da sie neue Dokumente erstellen, und er tritt nicht für Löschungen auf, da sie idempotent sind. |
| 409 | Beim Versuch, ein Dokument indizieren zu können, wurde ein Versionskonflikt erkannt. | Ja | Dies kann passieren, wenn Sie versuchen, dasselbe Dokument mehrmals gleichzeitig indizieren zu können. |
| 422 | Der Index ist vorübergehend nicht verfügbar, da er mit dem Flag "allowIndexDowntime" aktualisiert wurde, das auf "true" festgelegt ist. | Ja | |
| 429 | Zu viele Anforderungen | Ja | Wenn Sie diesen Fehlercode während der Indizierung erhalten, bedeutet dies in der Regel, dass Sie wenig Speicher haben. Wenn Sie sich den Speichergrenzen nähern, kann der Dienst einen Zustand erreichen, in dem Sie keine Dokumente hinzufügen oder aktualisieren können, bis Sie einige gelöscht haben. Weitere Informationen finden Sie unter "Planen und Verwalten von Kapazität ", wenn Sie mehr Speicherplatz benötigen oder Speicherplatz freigeben möchten, indem Sie Dokumente löschen. |
| 503 | Ihr Suchdienst ist vorübergehend nicht verfügbar, möglicherweise aufgrund schwerer Auslastung. | Ja | Ihr Code sollte in diesem Fall eine Wartepause einlegen, bevor er einen weiteren Versuch unternimmt, andernfalls riskieren Sie, die Zeitspanne der Dienstunverfügbarkeit zu verlängern. |
Wenn der Clientcode häufig auf eine 207-Antwort trifft, ist ein möglicher Grund dafür, dass das System überlastet ist. Sie können dies bestätigen, indem Sie die statusCode-Eigenschaft für 503 überprüfen. Wenn der Statuscode 503 ist, empfehlen wir, Indizierungsanforderungen zu drosseln. Nimmt der Indizierdatenverkehr nicht ab, kann dies dazu führen, dass alle Anforderungen mit dem Fehler "503" abgelehnt werden.
Statuscode 429 gibt an, dass Sie Ihr Kontingent für die Anzahl der Dokumente pro Index überschritten haben. Sie müssen entweder ein Upgrade für höhere Kapazitätsbeschränkungen durchführen oder einen neuen Index erstellen.
Hinweis
Wenn Sie DateTimeOffset Werte mit Zeitzoneninformationen in Ihren Index hochladen, normalisiert Azure KI-Suche diese Werte in UTC. Beispielsweise wird 2024-01-13T14:03:00-08:00 als 2024-01-13T22:03:00Z gespeichert. Wenn Sie Zeitzoneninformationen speichern müssen, fügen Sie ihrem Index für diesen Datenpunkt eine zusätzliche Spalte hinzu.
Tipps für die inkrementelle Indizierung
Indexer automatisieren die inkrementelle Indizierung. Wenn Sie einen Indexer verwenden können und die Datenquelle die Änderungsnachverfolgung unterstützt, können Sie den Indexer für einen wiederkehrenden Zeitplan ausführen, um durchsuchbare Inhalte hinzuzufügen, zu aktualisieren oder zu überschreiben, damit sie mit Ihren externen Daten synchronisiert wird.
Wenn Sie Indexaufrufe direkt über die Push-API ausführen, verwenden Sie
mergeOrUploadsie als Suchaktion.Die Nutzlast muss die Schlüssel oder Bezeichner jedes Dokuments enthalten, das Sie hinzufügen, aktualisieren oder löschen möchten.
Wenn Ihr Index Vektorfelder enthält und Sie die
storedEigenschaft auf "false" festlegen, stellen Sie sicher, dass Sie den Vektor in der teilweisen Dokumentaktualisierung angeben, auch wenn der Wert unverändert ist. Ein Nebeneffekt des Setzens vonstoredauf "false" ist, dass Vektoren bei einer Neuindizierung verloren gehen. Durch die Bereitstellung des Vektors in der Dokumentnutzlast wird dies verhindert.Um den Inhalt einfacher Felder und Unterfelder in komplexen Typen zu aktualisieren, listen Sie nur die Felder auf, die Sie ändern möchten. Wenn Sie beispielsweise nur ein Beschreibungsfeld aktualisieren müssen, sollte die Nutzlast aus dem Dokumentschlüssel und der geänderten Beschreibung bestehen. Wenn andere Felder weggelassen werden, bleiben ihre vorhandenen Werte erhalten.
Um Inline-Änderungen in eine Zeichenfolgensammlung zusammenzuführen, geben Sie den vollständigen Wert an. Erinnern Sie sich an das
tagsFeldbeispiel aus dem vorherigen Abschnitt. Neue Werte überschreiben die alten Werte für ein gesamtes Feld, und es gibt keine Zusammenführung innerhalb des Inhalts eines Felds.
Hier ist ein REST-API-Beispiel , in dem diese Tipps veranschaulicht werden:
### Get Stay-Kay City Hotel by ID
GET {{baseUrl}}/indexes/hotels-vector-quickstart/docs('1')?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
### Change the description, city, and tags for Stay-Kay City Hotel
POST {{baseUrl}}/indexes/hotels-vector-quickstart/docs/search.index?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"value": [
{
"@search.action": "mergeOrUpload",
"HotelId": "1",
"Description": "I'm overwriting the description for Stay-Kay City Hotel.",
"Tags": ["my old item", "my new item"],
"Address": {
"City": "Gotham City"
}
}
]
}
### Retrieve the same document, confirm the overwrites and retention of all other values
GET {{baseUrl}}/indexes/hotels-vector-quickstart/docs('1')?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
Reference:Documents - Index, Nachschlagedokument
SDK-Beispiele
Die folgenden Beispiele zeigen, wie Dokumente mithilfe der Azure SDKs aktualisiert werden.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
# Set up the client
service_name = "<your-search-service-name>"
index_name = "hotels-sample"
api_key = "<your-admin-api-key>"
endpoint = f"https://{service_name}.search.windows.net"
credential = AzureKeyCredential(api_key)
client = SearchClient(endpoint=endpoint, index_name=index_name, credential=credential)
# Update documents using merge_or_upload
documents = [
{
"HotelId": "1",
"Description": "Updated description for the hotel.",
"Tags": ["updated", "renovated"]
}
]
result = client.merge_or_upload_documents(documents=documents)
print(f"Updated {len(result)} document(s)")
Referenz:SearchClient, merge_or_upload_documents
Aktualisieren eines Indexschemas
Das Indexschema definiert die physischen Datenstrukturen, die im Suchdienst erstellt wurden, sodass es nicht viele Schemaänderungen gibt, die Sie vornehmen können, ohne dass eine vollständige Neuerstellung entsteht.
Updates ohne Neukompilierung
In der folgenden Liste werden die Schemaänderungen aufgelistet, die nahtlos in einen vorhandenen Index eingeführt werden können. Im Allgemeinen enthält die Liste neue Felder und Funktionen, die während der Abfrageausführung verwendet werden.
- Hinzufügen einer Indexbeschreibung
- Hinzufügen eines neuen Felds
- Festlegen des
retrievableAttributs für ein vorhandenes Feld - Aktualisieren von
searchAnalyzerauf einem Feld mit einem vorhandenenindexAnalyzer - Hinzufügen einer neuen Analysedefinition in einem Index (die auf neue Felder angewendet werden kann)
- Hinzufügen, Aktualisieren oder Löschen von Bewertungsprofilen
- Sie können Synonymkarten hinzufügen, aktualisieren oder löschen.
- Hinzufügen, Aktualisieren oder Löschen von semantischen Konfigurationen
- Hinzufügen, Aktualisieren oder Löschen von CORS-Einstellungen
Die Reihenfolge der Vorgänge lautet:
Aktualisieren Sie das Schema mit den Änderungen aus der vorherigen Liste.
Aktualisieren sie das Indexschema für den Suchdienst.
Aktualisieren Sie den Indexinhalt so, dass es Ihrem überarbeiteten Schema entspricht, wenn Sie ein neues Feld hinzugefügt haben. Für alle anderen Änderungen wird der vorhandene indizierte Inhalt unverändert verwendet.
Wenn Sie ein Indexschema so aktualisieren, dass es ein neues Feld enthält, erhalten vorhandene Dokumente im Index einen NULL-Wert für dieses Feld. Im nächsten Indizierungsauftrag ersetzen Werte aus externen Quelldaten die von Azure KI-Suche hinzugefügten Nullen.
Während der Aktualisierungen sollten keine Abfrageunterbrechungen auftreten, aber die Abfrageergebnisse variieren, wenn die Aktualisierungen wirksam werden.
Updates, die eine Neuerstellung erfordern
Einige Änderungen erfordern einen Indexabbruch und eine Neuerstellung, wobei ein aktueller Index durch einen neuen ersetzt wird.
| Aktion | Beschreibung |
|---|---|
| Löschen eines Felds | Um alle Spuren eines Feldes physisch zu entfernen, 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 sie verwenden die SearchFields - und Auswahlabfrageparameter , um auszuwählen, welche Felder durchsucht und zurückgegeben werden. Physisch verbleiben die Felddefinition und der Inhalt im Index, bis die nächste Neuerstellung erfolgt, wenn Sie ein Schema anwenden, das das betreffende Feld ausgelassen. |
| Ändern einer Felddefinition | Änderungen an einem Feldnamen, Datentyp oder bestimmten Indexattributen (durchsuchbar, filterbar, sortierbar, facetable) erfordern eine vollständige Neuerstellung. |
| Zuweisen eines Analyzers zu einem Feld | Analysatoren 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 Analysatordefinition hinzufügen; sie können jedoch nur dann einen Analysator zuweisen, wenn das Feld erstellt wird. Dies gilt sowohl für die Analyzer- als auch die IndexAnalyzer-Eigenschaft. Die SearchAnalyzer-Eigenschaft ist eine Ausnahme (Sie können diese Eigenschaft einem vorhandenen Feld zuweisen). |
| Aktualisieren oder Löschen einer Analysedefinition in einem Index | Sie können eine vorhandene Analysekonfiguration (Analyzer, Tokenizer, Tokenfilter oder Zeichenfilter) nicht im Index löschen oder ändern, es sei denn, Sie erstellen den gesamten Index neu. |
| Hinzufügen eines Felds zu einem Vorschlager | Wenn bereits ein Feld vorhanden ist und Sie es einem Suggesters-Konstrukt hinzufügen möchten, erstellen Sie den Index neu. |
| Aktualisieren Ihres Diensts oder Ihrer Stufe | Wenn Sie mehr Kapazität benötigen, überprüfen Sie, ob Sie Ihren Dienst aktualisieren oder zu einem höheren Preisniveau wechseln können. Andernfalls müssen Sie einen neuen Dienst erstellen und die Indizes von Grund auf neu erstellen. Um diesen Prozess zu automatisieren, können Sie ein Codebeispiel verwenden, mit dem Ihr Index in einer Reihe von JSON-Dateien gesichert wird. Anschließend können Sie den Index in einem von Ihnen angegebenen Suchdienst neu erstellen. |
Die Reihenfolge der Vorgänge lautet:
Rufen Sie eine Indexdefinition ab, falls Sie sie für zukünftige Verweise benötigen oder als Grundlage für eine neue Version verwenden möchten.
Erwägen Sie die Verwendung einer Sicherungs- und Wiederherstellungslösung, um eine Kopie von Indexinhalten beizubehalten. Es gibt Lösungen in C# und in Python. Wir empfehlen die Python Version, da sie aktueller ist.
Wenn Sie über Kapazität für Ihren Suchdienst verfügen, behalten Sie den vorhandenen Index bei, während Sie den neuen erstellen und testen.
Legen Sie den vorhandenen Index ab. Abfragen, die auf den Index abzielen, werden sofort gelöscht. Denken Sie daran, dass das Löschen eines Indexes unumkehrbar ist und physischen Speicher für die Feldersammlung und andere Konstrukte zerstört.
Posten Sie einen überarbeiteten Index, in dem der Inhalt der Anforderung geänderte oder modifizierte Felddefinitionen und -konfigurationen enthält.
Laden Sie den Index mit Dokumenten aus einer externen Quelle. Dokumente werden mithilfe der Felddefinitionen und Konfigurationen des neuen Schemas indiziert.
Wenn Sie den Index erstellen, wird physischer Speicher für jedes Feld im Indexschema zugewiesen, wobei für jedes durchsuchbare Feld ein invertierter Index und ein für jedes Vektorfeld erstellter Vektorindex erstellt wird. Felder, die nicht durchsuchbar sind, können in Filtern oder Ausdrücken verwendet werden, haben aber keine invertierten Indizes und sind nicht volltextig oder fuzzysuchbar. Bei einer Indexneuerstellung werden diese invertierten Indizes und Vektorindizes gelöscht und basierend auf dem von Ihnen bereitgestellten Indexschema neu erstellt.
Um Unterbrechungen des Anwendungscodes zu minimieren, sollten Sie einen Indexalias erstellen. Der Anwendungscode verweist auf den Alias, Sie können jedoch den Namen des Indexes aktualisieren, auf den der Alias verweist.
Hinzufügen einer Indexbeschreibung
Ein Index verfügt über eine description Eigenschaft, die Sie angeben und verwenden können, wenn ein System auf mehrere Indizes zugreifen muss und basierend auf der Beschreibung eine Entscheidung treffen muss. Erwägen Sie einen MCP-Server (Model Context Protocol), der zur Laufzeit den richtigen Index auswählen muss. Die Entscheidung kann auf der Beschreibung und nicht allein auf dem Indexnamen basieren.
Eine Indexbeschreibung ist eine Schemaaktualisierung, und Sie können sie hinzufügen, ohne den gesamten Index neu erstellen zu müssen.
- Die Zeichenfolgenlänge beträgt maximal 4.000 Zeichen.
- Inhalte müssen in Unicode lesbar sein. Ihr Anwendungsfall sollte bestimmen, welche Sprache verwendet werden soll.
Sie können eine Indexbeschreibung über das Azure Portal, die neueste stabile REST-API oder ein Azure SDK Paket hinzufügen, das das Feature bereitstellt.
Das Azure-Portal unterstützt die neueste Vorschau-API.
Wechseln Sie zum Suchdienst im Azure-Portal.
Wählen Sie unter "Suchverwaltungsindizes>" einen Index aus.
Wählen Sie "JSON bearbeiten" aus.
Fügen Sie
"description"gefolgt von der Beschreibung ein. Der Wert muss kleiner als 4.000 Zeichen und in Unicode sein.
Speichern Sie den Index.
Ausgleich von Arbeitslasten
Die Indizierung wird nicht im Hintergrund ausgeführt, der Suchdienst gleicht jedoch alle Indizierungsaufträge mit laufenden Abfragen ab. Während der Indizierung können Sie Abfrageanforderungen monitorieren im Azure-Portal, um sicherzustellen, dass Abfragen zeitnah abgeschlossen werden.
Wenn das Indizieren von Arbeitslasten zu inakzeptablen Abfrageverzögerungen führt, führen Sie eine Leistungsanalyse durch und überprüfen Sie diese Leistungstipps zur möglichen Abhilfe.
Nach Updates suchen
Sie können mit der Abfrage eines Indexes beginnen, sobald das erste Dokument geladen wird. Wenn Sie die ID eines Dokuments kennen, gibt die REST-API des Nachschlagedokuments das jeweilige Dokument zurück. Für umfassendere Tests sollten Sie warten, bis der Index vollständig geladen ist, und dann Abfragen verwenden, um den erwarteten Kontext zu überprüfen.
Sie können den Such-Explorer oder einen REST-Client verwenden, um nach aktualisierten Inhalten zu suchen.
Wenn Sie ein Feld hinzugefügt oder umbenannt haben, verwenden Sie die Option , um dieses Feld zurückzugeben:
"search": "*",
"select": "document-id, my-new-field, some-old-field",
"count": true
Das Azure Portal stellt die Indexgröße und die Vektorindexgröße bereit. Sie können diese Werte nach dem Aktualisieren eines Indexes überprüfen, aber denken Sie daran, eine kleine Verzögerung zu erwarten, da der Dienst die Änderung verarbeitet und die Aktualisierungsraten des Portals berücksichtigt, was einige Minuten dauern kann.
Problembehandlung bei Neuindizierung
In der folgenden Tabelle sind häufige Probleme beim Aktualisieren oder Neuerstellen von Indizes und deren Behebung aufgeführt.
| Angelegenheit | Ursache | Auflösung |
|---|---|---|
| Antwort 207 mit gemischten Ergebnissen | Einige Dokumente konnten erfolgreich ausgeführt werden, andere sind fehlgeschlagen. | Überprüfen Sie statusCode für jedes Dokument in der Antwort. Wenn 503, drosseln Sie Anforderungen und wiederholen Sie den Vorgang. |
| 409 Versionskonflikt | Gleichzeitige Aktualisierungen desselben Dokuments. | Serialisieren Sie Aktualisierungen desselben Dokuments, oder implementieren Sie wiederholungsversuche mit exponentiellem Backoff. |
| 429 zu viele Anforderungen | Das Speicherkontingent wurde überschritten oder es gibt zu viele gleichzeitige Anforderungen. | Löschen Sie Dokumente, um Speicherplatz frei zu haben, oder aktualisieren Sie die Dienstebene für mehr Kapazität. |
| 503 Dienst nicht verfügbar | Dienst unter hoher Last. | Warten Sie, und wiederholen Sie den Vorgang mit exponentiellem Backoff. Erwägen Sie, die Batchgröße zu reduzieren. |
| Dokumentanzahl nach dem Löschen unverändert | Das Löschen ist asynchron. | Warten Sie 2 bis 3 Minuten, bis der Hintergrundvorgang den physischen Löschvorgang abgeschlossen hat. |
| Neues Feld gibt NULL zurück. | Feld dem Schema hinzugefügt, aber Dokumente nicht neu indiziert. | Führen Sie den Indexer aus, oder übertragen Sie aktualisierte Dokumente, um das neue Feld aufzufüllen. |
| Schemaänderung abgelehnt | Inkompatible Änderung versucht (Umbenennen, Typänderung). | Entfernen Sie den Index und erstellen Sie ihn neu. Verwenden Sie den Indexalias, um Ausfallzeiten zu minimieren. |