SearchConditionExpression must be provided when SearchSchema has a HASH key

요약 — 벡터 인덱스가 HASH 검색 스키마 속성과 함께 생성되어 파티션 필터가 필수가 되었습니다. 모든 SearchVectors 호출은 동등 조건으로 그 속성에 정확히 하나의 값을 고정해야 하며, "모든 파티션 검색" 모드는 없습니다.

무엇을 의미하는가

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

저희가 us-east-1에서 HASH 요소로 정의된 인덱스에 조건을 생략하고 호출해서 캡처한, 서비스의 원문 그대로의 응답입니다. 선택은 인덱스 생성 시점에 이루어졌습니다: HASH 키는 인덱스를 파티션으로 나누고, 그 뒤로 모든 검색은 정확히 하나의 파티션 값으로 한정됩니다.

왜 발생하는가

  • 조건이 아예 없습니다 — 스키마 없는 인덱스를 상대로 작성된 코드가 HASH 키가 있는 인덱스를 가리키게 될 때 가장 흔한 경우입니다.
  • 표현식이 HASH 속성을 고정하지 않습니다INLINE_FILTER 속성만 필터링하는 것으로는 요건이 충족되지 않습니다.
  • 표현식이 동등 조건 외의 것을 사용합니다SearchConditionExpression=만 허용하므로 파티션 속성에 대한 begins_withIN도 실패합니다.

어떻게 해결하는가

조건을 추가하고 값을 하나 고정하세요:

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"}}'

액세스 패턴이 정말로 파티션 간(cross-partition) 검색을 필요로 한다면 인덱스를 HASH 요소 없이 만들어야 합니다 — 검색 스키마는 불변이므로 곧 새 인덱스를 의미합니다. 그리고 이 키는 보안 경계가 아니라 라우팅 선택으로 다루세요: 세분화된 액세스 제어는 SearchVectors에 적용되지 않습니다.

관련 문서

HASH 키가 무엇을 주는지(처리량 확장, 더 저렴한 검색)와 무엇을 대가로 요구하는지: DynamoDB 벡터 검색 가이드.

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.