SearchConditionExpression must be provided when SearchSchema has a HASH key

In breve — l'indice vettoriale è stato creato con un attributo HASH nel search schema, il che rende obbligatorio un filtro di partizione. Ogni chiamata SearchVectors deve fissarne esattamente un valore con una condizione di uguaglianza; non esiste una modalità "cerca in tutte le partizioni".

Cosa significa

ValidationException: SearchConditionExpression must be provided when SearchSchema has a HASH key

Questa è la risposta verbatim del servizio che abbiamo catturato in us-east-1 omettendo la condizione contro un indice definito con un elemento HASH. La scelta è stata fatta alla creazione dell'indice: una chiave HASH partiziona l'indice, e da quel momento ogni ricerca è limitata a esattamente un valore di partizione.

Perché succede

  • La condizione manca del tutto — il caso più comune quando codice scritto contro un indice senza schema viene puntato su uno con una chiave HASH.
  • L'espressione non fissa l'attributo HASH — filtrare solo su un attributo INLINE_FILTER non soddisfa il requisito.
  • L'espressione usa qualcosa di diverso dall'uguaglianzaSearchConditionExpression accetta solo =, quindi anche un begins_with o un IN sull'attributo di partizione fallisce.

Come risolverlo

Aggiungi la condizione e fissa un valore:

aws dynamodb search-vectors \
  --table-name SupportTickets \
  --index-name TicketEmbeddings \
  --search-vector file://query-vector.json \
  --top-k 10 \
  --search-condition-expression "product = :p" \
  --expression-attribute-values '{":p": {"S": "checkout"}}'

Se il tuo pattern di accesso ha davvero bisogno di una ricerca cross-partizione, l'indice va creato senza un elemento HASH — il search schema è immutabile, quindi significa un nuovo indice. E tratta la chiave come una scelta di instradamento, non come un confine di sicurezza: il controllo degli accessi granulare non si applica a SearchVectors.

Argomenti correlati

Cosa ti compra una chiave HASH (scalabilità del throughput, ricerche più economiche) e cosa ti costa: la guida alla ricerca vettoriale DynamoDB.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.