[英]Querying a local secondary index of dynamoDB using low level java API
我正在嘗試使用哈希鍵查詢本地二級索引。
我的表:Table1用戶名(哈希鍵),Id(范圍鍵),時間戳。
我的本地二級索引(因為我想查詢所有用戶名並按時間對其進行排序)我的LSI:Table1_TimestampLSI用戶名(哈希鍵),時間戳(范圍鍵)
例如user1 | 123 | 2015年12月12日user1 | 456 | 2015年11月1日user2 | 789 | 2015年12月1日
注意:因為(Username + Timestamp)不是唯一的,所以我不能僅使時間戳成為表本身的范圍鍵。 因此,我必須創建一個ID字段以確保唯一性。
因為我想要異步客戶端,所以我使用了低級API(NOT模型文檔)java API。
查詢索引的功能
HashMap<String, Condition> queryFilter = new HashMap<String, Condition>();
Condition condition = new Condition()
.withComparisonOperator(ComparisonOperator.EQ.toString())
.withAttributeValueList(new AttributeValue().withS(username));
queryFilter.put("Username", condition);
QueryRequest queryRequest = new QueryRequest(tableName + "_TimestampLSI").withQueryFilter(queryFilter);
queryRequest.setScanIndexForward(false);
Future<QueryResult> fQueryResult = dynamoDB.queryAsync(queryRequest,
new AsyncHandler<QueryRequest,QueryResult>() {
public void onSuccess(QueryRequest request, QueryResult result) {
System.out.println("Table: " + result);
}
public void onError(Exception exception) {
System.out.println("Error describing table: " + exception.getMessage());
// Callers can also test if exception is an instance of
// AmazonServiceException or AmazonClientException and cast
// it to get additional information
}
});
System.out.println("Result: " + fQueryResult);
我收到以下錯誤錯誤描述表:必須在請求中指定KeyConditions或KeyConditionExpression參數。 (服務:AmazonDynamoDBv2;狀態代碼:400;錯誤代碼:ValidationException;
我想念什么嗎? 以為我應該能夠僅在哈希值上查詢索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.