Запрос индексов БД Dynamo: GSI и LSI
Я использую мобильное приложение для запроса таблиц Dynamo DB. Я использовал следующий запрос для извлечения элемента из таблицы Dynamo DB Test:
Test t = mapper.load (Test.class, DynamoDBHashKey, DynamoDBRangeKey);
У меня вопрос, как запросить элемент из глобального вторичного индекса? Я правильно определил аннотации и параметры в классе Java таблицы Test.
Есть ли другой метод для запроса глобальных вторичных индексов и локальных вторичных индексов.
1 ответ
Решение
load api
не может быть использован для запроса GSI. Query API может использоваться для запроса GSI с ключевыми атрибутами.
Образец кода:-
Map<String, AttributeValue> vals = new HashMap<>();
vals.put(":val1", new AttributeValue().withS("somevalue"));
DynamoDBQueryExpression<modelclass> queryExp = new DynamoDBQueryExpression<modelclass>()
.withKeyConditionExpression("category = :val1").withIndexName("indexname")
.withExpressionAttributeValues(vals);
dynamoDBMapper.query(modelclass.class, queryExp);