【发布时间】:2020-12-18 23:18:58
【问题描述】:
我正在尝试根据全局二级索引来检查我的表上是否有任何具有该值的项目。我是 dynamo 的新手,我正在将 java 与 AWS SDK v2 结合使用。我不确定是否要进行查询,我只需要使用索引名称进行查询,然后同时使用分区键和排序键。
public Integer checkIfExists(String serialNumber) {
String tableName = System.getenv("TABLE_NAME");
String partitionKeyName="GSI4PK";
String partitionKeyVal="GSI4SK";
String partitionAlias="#a";
// Set up an alias for the partition key name in case it's a reserved word
HashMap<String, String> attrNameAlias = new HashMap<String, String>();
attrNameAlias.put(partitionAlias, partitionKeyName);
// Set up mapping of the partition name with the value
HashMap<String, AttributeValue> attrValues = new HashMap<String, AttributeValue>();
attrValues.put(":val1", AttributeValue.builder().s(serialNumber).build());
QueryRequest queryReq = QueryRequest.builder().tableName(tableName)
.keyConditionExpression(partitionKeyName + " = :val1").
expressionAttributeValues(attrValues).indexName("CertificateDirect").build();
try {
QueryResponse response = dynamoDbClient.query(queryReq);
System.out.println(response.toString());
System.out.println(response.count());
return response.count();
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
System.exit(1);
}
return -1;
}
我还看到有一个名为 partitionAlias 的值,我不确定它的作用
【问题讨论】:
-
由于您是 DynamoDB 和 Java V2 的新手,请参阅此示例。它会帮助你。 github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/…
-
是的,谢谢,只是示例是用于扫描而不是用于查询
标签: java amazon-web-services lambda amazon-dynamodb