

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Problembehandlung bei Vektorindizes
<a name="VectorSearchTroubleshooting"></a>

In der folgenden Tabelle sind häufig auftretende Probleme bei der Arbeit mit Vektorindizes und deren Behebung aufgeführt.


| Symptom | Ursache | Auflösung | 
| --- | --- | --- | 
| ValidationException: SearchConditionExpression must be provided when SearchSchema has a HASH key | Der Index definiert in seinem Index einen Vektorindex-Partitionsschlüssel (HASH) SearchSchema, aber die Suche lieferte seinen Wert nicht. | Fügen Sie die Gleichheit des Vektorindex-Partitionsschlüssels hinzu SearchConditionExpressionCategory = :cat, z. B. mit einem passenden ExpressionAttributeValues Eintrag. | 
| ValidationException: One element in SearchSchema is not defined in attribute definitions | Ein SearchSchema Attribut (Vektorindex-Partitionsschlüssel oder Inline-Filter) ist in der Tabelle nicht deklariertAttributeDefinitions. | Fügen Sie jedes SearchSchema Attribut AttributeDefinitions mit seinem Typ hinzu, genauso wie Schlüsselattribute für einen globalen Sekundärindex deklariert werden. | 
| ValidationException: Invalid comparator used in SearchConditionExpression | Ein anderer Operator als = wurde verwendet. Derzeit wird nur der Gleichheitsoperator für Vektorindex-Partitionsschlüssel- und Inline-Filterattribute unterstützt. | Schreiben Sie die Bedingung so um, dass sie = nur verwendet wird. Die Operatoren „Vergleich“, „Bereich“ und „Gruppenzugehörigkeit“ sind noch nicht verfügbar. | 
| ValidationException: Provided TopK value is out of valid range | TopKlag außerhalb von 1 bis 100. | Auf TopK einen Wert zwischen 1 und 100 (einschließlich) eingestellt. | 
| SearchVectorsgibt einen Fehler zurück, während der Index wieder aufgefüllt wird | Der Vektorindex ist noch nicht für die Suche bereit. Entweder IndexStatus istCREATING, oder IndexStatus es ist ACTIVE Backfilling gesetzt auftrue. Sie können einen Vektorindex erst durchsuchen, wenn das Auffüllen abgeschlossen ist. | Verwenden Sie DescribeTable und warten Sie, bis Backfilling es istfalse, und versuchen Sie dann erneut, die Suche durchzuführen. | 
| Write wird abgelehnt, wenn ein Objekt mit einem Vektor geschrieben wird | Der Vektor hat die falsche Anzahl von Dimensionen für den Index. | Stellen Sie sicher, dass die Vektorlänge mit dem Index übereinstimmtDimensions. Siehe [Elemente mit Vektordaten schreiben](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Write). | 
| Der Schreibvorgang wird mit „Ungültiger Parametertyp“ abgelehnt | Das Vektorattribut hat einen falschen Datentyp. DynamoDB erwartet eine Liste von 32-Bit-Gleitkommazahlen. Zu den häufigsten Ursachen gehören das Senden eines Strings (S), eines Number-Skalars (N), eines Number Set (NS) oder einer Liste, die nichtnumerische Elemente enthält. Die Fehlermeldung weist auf den Index des betreffenden Elements hin, wenn ein einzelnes Element den falschen Typ hat. | Senden Sie das Vektorattribut als Liste (L) von Zahlen (N). Stellen Sie sicher, dass jedes Element in der Liste eine gültige Zahl ist und dass die Listenlänge mit dem Index übereinstimmtDimensions. | 
| Das Element wird nicht mehr zurückgegeben, SearchVectors nachdem das Schlüsselattribut für die Vektorindexpartition entfernt oder weggelassen wurde | Wenn Sie das Schlüsselattribut für die Vektorindex-Partition aus einem Element entfernen (über REMOVE inUpdateItem) oder es in a weglassen, wird PutItem kein Fehler ausgegeben. Das Element wird jedoch stillschweigend deindiziert und erscheint nicht mehr in den Suchergebnissen, obwohl das Element der Basistabelle und seine Vektoreinbettung noch vorhanden sind. | Stellen Sie sicher, dass jedes Element, das durchsuchbar sein soll, das Partitionsschlüsselattribut für den Vektorindex beibehält. Wenn ein Element unerwartet aus den Suchergebnissen verschwindet, stellen Sie sicher, dass sein Partitionsschlüsselattribut immer noch im Basistabellenelement vorhanden ist. | 
| Der Schreibvorgang wird mit der Meldung „Kann keinen leeren Zeichenfolgenwert enthalten“ abgelehnt oder der Typ des Vektorindex-Partitionsschlüssels stimmt nicht überein | Das Schlüsselattribut für die Vektorindexpartition wurde auf eine leere Zeichenfolge gesetzt oder mit dem falschen Datentyp geschrieben. DynamoDB lehnt diese Schreibvorgänge ab, da ein Index-Schlüsselattribut nicht leer sein darf und dem deklarierten Typ entsprechen muss. | Verwenden Sie einen gültigen, nicht leeren Wert mit dem richtigen Datentyp für das Vektorindex-Partitionsschlüsselattribut. Überprüfen Sie die Indexdefinition, um den erwarteten Typ zu bestätigen. | 
| In den Suchergebnissen fehlt ein Attribut | Der Vektorindex projiziert dieses Attribut nicht. | Sie können nur Attribute abrufen, die in den Index projiziert wurden. Um zusätzliche Attribute zurückzugeben, erstellen Sie den Index mit einer breiteren Projektion neu oder setzen Sie ihn ProjectionType aufALL. | 

## Hinzufügen eines Partitionsschlüssels zu einem vorhandenen Vektorindex
<a name="VectorSearchTroubleshooting.ChangePartitionKey"></a>

Der Index eines Vektorindexes `SearchSchema` wird zum Zeitpunkt der Erstellung festgelegt. Sie können den Partitionsschlüssel (`HASH`) nicht hinzufügen, entfernen oder ändern, nachdem Sie den Index erstellt haben. Sie können auch die Attribute von Inline-Filtern nicht ändern. Um das Schema zu ändern, erstellen Sie einen neuen Index und migrieren Sie zu diesem.

Gehen Sie wie folgt vor, um einen Partitionsschlüssel hinzuzufügen oder andere `SearchSchema` Attribute zu ändern.

1. Erstellen Sie einen neuen Vektorindex mit dem Partitionsschlüssel, den Sie benötigen. Verwenden Sie die `UpdateTable` API mit einer `Create` Aktion im `VectorIndexUpdates` Parameter. Geben Sie dem neuen Index einen anderen Namen. Detaillierte Anweisungen finden Sie unter [Hinzufügen eines Vektorindexes zu einer vorhandenen Tabelle](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Create.ExistingTable).

1. Warten Sie, bis der neue Index das Auffüllen abgeschlossen hat. Rufen Sie an `DescribeTable` und bestätigen Sie, dass das `IndexStatus` ist `ACTIVE` und `Backfilling` ist`false`.

1. Aktualisieren Sie Ihre Anwendung, um `SearchVectors` Anfragen an den neuen Index zu senden. Fügen Sie den Wert des Partitionsschlüssels in ein`SearchConditionExpression`. Weitere Informationen finden Sie unter [Filtern mit SearchConditionExpression](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Search.Filtering).

1. Nachdem Sie die korrekten Ergebnisse bestätigt haben, löschen Sie den alten Index, damit Sie nicht mehr für seinen Speicherplatz bezahlen müssen. Verwenden Sie die `UpdateTable` API mit einer `Delete` Aktion im `VectorIndexUpdates` Parameter. Detaillierte Anweisungen finden Sie unter [Löschen eines Vektorindex](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Delete).

**Indexoperationen wirken sich nicht auf die Daten der Basistabelle aus**  
Das Erstellen oder Löschen eines Vektorindexes wirkt sich nicht auf die Basistabelle oder ihre Elemente aus. DynamoDB leitet beim Auffüllen Vektordaten aus den Elementen der Basistabelle neu ab.