AmazonDynamoDBv2 Запрос не распознает GSI
Моя реализация AmazonDynamoDBv2 AmazonDynamoDBAsync.queryAsync с QueryRequest возвращает код 400 "Элемент схемы ключа пропущенного условия запроса...", когда я запрашиваю GSI.
Я попытался использовать как имя DynamoDBAttribute ("myAttr"), так и фактическое имя индекса GSI ("idx_global_myAttr") и получить тот же код ошибки. Это работает против образа Docker "amazon/ динамод-локальный".
Я прочитал документы DynamoDB по GSI, но не могу понять, как нацелить вторичный индекс в этом запросе. Кажется, реагирует только на первичный индекс.
Описание таблицы: `
tableDescription: {
attributeDefinitions: {
{
"attributeName": "myAttr",
"attributeType": "S"
},
{
"attributeName": "id",
"attributeType": "S"
}
},
...
"tableName": "myTable",
...
"globalSecondaryIndexes": [
{
"indexName": "idx_global_ myAttr",
"keyType": "HASH"
}
]
...
}
`
QueryRequest:
`
var attributeValue = new AttributeValue().withS(value);
var expressionAttributeValueMap = Map.of(":v1", attributeValue);
var queryRequest = new QueryRequest("myTable")
.withExpressionAttributeValues(expressionAttributeValeMap)
.withKeyConditionExpression("myAttr = :v1");
`
1 ответ
РЕШИТЬ:
Укажите индекс для QueryRequest, добавив .withIndex("idx_global_myAttr")
в построитель QueryRequest и используйте имя атрибута ("myAttr") в выражении KeyCondidtionExpression.