

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Risoluzione dei problemi relativi agli indici vettoriali
<a name="VectorSearchTroubleshooting"></a>

La tabella seguente elenca i problemi più comuni quando si lavora con gli indici vettoriali e come risolverli.


| Caratteristiche | Causa | Risoluzione | 
| --- | --- | --- | 
| ValidationException: SearchConditionExpression must be provided when SearchSchema has a HASH key | L'indice definisce una chiave di partizione dell'indice vettoriale (HASH) nel suo campo SearchSchema, ma la ricerca non ne ha fornito il valore. | Aggiungete l'uguaglianza della chiave di partizione dell'indice vettoriale aSearchConditionExpression, ad esempioCategory = :cat, con una voce corrispondenteExpressionAttributeValues. | 
| ValidationException: One element in SearchSchema is not defined in attribute definitions | Un SearchSchema attributo (chiave di partizione dell'indice vettoriale o filtro in linea) non è dichiarato nella tabella. AttributeDefinitions | Aggiungete ogni SearchSchema attributo AttributeDefinitions con il relativo tipo, nello stesso modo in cui vengono dichiarati gli attributi chiave per un indice secondario globale. | 
| ValidationException: Invalid comparator used in SearchConditionExpression | È = stato utilizzato un operatore diverso da quello utilizzato. Attualmente è supportato solo l'operatore di uguaglianza per gli attributi della chiave di partizione dell'indice vettoriale e del filtro in linea. | Riscrivi la condizione per utilizzarla solo. = Gli operatori di confronto, intervallo e appartenenza ai set non sono ancora disponibili. | 
| ValidationException: Provided TopK value is out of valid range | TopKera compreso tra 1 e 100. | TopKImpostato su un valore compreso tra 1 e 100 inclusi. | 
| SearchVectorsrestituisce un errore durante il riempimento dell'indice | L'indice vettoriale non è ancora pronto per la ricerca. O IndexStatus CREATING lo è o IndexStatus è ACTIVE Backfilling impostato sutrue. Non puoi cercare in un indice vettoriale finché non viene completato il backfill. | Usa DescribeTable e attendi che Backfilling sia cosìfalse, quindi riprova la ricerca. | 
| La scrittura viene rifiutata quando si scrive un elemento con un vettore | Il vettore ha un numero errato di dimensioni per l'indice. | Assicurati che la lunghezza del vettore corrisponda all'indiceDimensions. Per informazioni, consulta [Scrittura di elementi con dati vettoriali](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Write). | 
| La scrittura viene rifiutata con «Tipo di parametro non valido» | L'attributo vector ha un tipo di dati errato. DynamoDB prevede un elenco di numeri in virgola mobile a 32 bit. Le cause più comuni includono l'invio di una stringa (S), un numero scalare (N), un set di numeri (NS) o un elenco contenente elementi non numerici. Il messaggio di errore individua l'indice dell'elemento offensivo quando un singolo membro ha il tipo sbagliato. | Invia l'attributo vettoriale come List (L) of Numbers (N). Verifica che ogni elemento dell'elenco sia un numero valido e che la lunghezza dell'elenco corrisponda all'indiceDimensions. | 
| L'elemento non viene più restituito da SearchVectors dopo aver rimosso o omesso l'attributo chiave di partizione dell'indice vettoriale | La rimozione dell'attributo della chiave di partizione dell'indice vettoriale da un elemento (tramite REMOVE inUpdateItem) o l'omissione in un PutItem non produce un errore. Tuttavia, l'elemento viene deindicizzato automaticamente e non viene più visualizzato nei risultati di ricerca, anche se l'elemento della tabella di base e il relativo incorporamento vettoriale esistono ancora. | Assicurati che ogni elemento che desideri sia ricercabile mantenga l'attributo chiave di partizione dell'indice vettoriale. Se un elemento scompare inaspettatamente dai risultati della ricerca, verifica che il relativo attributo della chiave di partizione sia ancora presente nell'elemento della tabella di base. | 
| La scrittura viene rifiutata in caso di errore «impossibile contenere un valore di stringa vuoto» o di mancata corrispondenza del tipo per la chiave di partizione dell'indice vettoriale | L'attributo della chiave di partizione dell'indice vettoriale è stato impostato su una stringa vuota o scritto con il tipo di dati errato. DynamoDB rifiuta queste scritture perché un attributo chiave di indice non può essere vuoto e deve corrispondere al tipo dichiarato. | Utilizza un valore valido e non vuoto con il tipo di dati corretto per l'attributo della chiave di partizione dell'indice vettoriale. Controllate la definizione dell'indice per confermare il tipo previsto. | 
| Manca un attributo nei risultati della ricerca | L'indice vettoriale non proietta questo attributo. | È possibile recuperare solo gli attributi proiettati nell'indice. Per restituire attributi aggiuntivi, ricreate l'indice con una proiezione più ampia o impostata su. ProjectionType ALL | 

## Aggiungere una chiave di partizione a un indice vettoriale esistente
<a name="VectorSearchTroubleshooting.ChangePartitionKey"></a>

L'indice vettoriale `SearchSchema` è fisso al momento della creazione. Non è possibile aggiungere, rimuovere o modificare la chiave di partizione (`HASH`) dopo aver creato l'indice. Inoltre, non è possibile modificare gli attributi del filtro in linea. Per modificare lo schema, crea un nuovo indice ed esegui la migrazione ad esso.

Per aggiungere una chiave di partizione o modificare altri `SearchSchema` attributi, completare i passaggi seguenti.

1. Crea un nuovo indice vettoriale con la chiave di partizione necessaria. Usa l'`UpdateTable`API con un'`Create`azione nel `VectorIndexUpdates` parametro. Assegna un nome diverso al nuovo indice. Per istruzioni, consulta [Aggiungere un indice vettoriale a una tabella esistente](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Create.ExistingTable).

1. Attendi che il nuovo indice termini il riempimento. Chiama `DescribeTable` e conferma che lo `IndexStatus` è `ACTIVE` e lo `Backfilling` è`false`.

1. Aggiorna l'applicazione per inviare `SearchVectors` richieste al nuovo indice. Includi il valore della chiave di partizione in`SearchConditionExpression`. Per ulteriori informazioni, consulta [Filtraggio con SearchConditionExpression](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Search.Filtering).

1. Dopo aver confermato i risultati corretti, elimina il vecchio indice per interrompere il pagamento per la sua archiviazione. Usa l'`UpdateTable`API con un'`Delete`azione nel `VectorIndexUpdates` parametro. Per istruzioni, consulta [Eliminazione di un indice vettoriale](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Delete).

**Le operazioni sull'indice non influiscono sui dati della tabella di base**  
La creazione o l'eliminazione di un indice vettoriale non influisce sulla tabella di base o sui suoi elementi. DynamoDB ricava i dati vettoriali dagli elementi della tabella di base durante il backfill.