0

当我在 GSI 上查询时,我使用 QueryRequest 实施 AmazonDynamoDBv2 的 AmazonDynamoDBAsync.queryAsync 时返回代码 400“查询条件缺少关键架构元素...”。

我尝试使用 DynamoDBAttribute 名称 ("myAttr") 和 GSI 的实际索引名称 ("idx_global_myAttr") 并收到相同的错误代码。这是针对 Docker 映像“amazon/dynamodb-local”运行的。

我已阅读有关 GSI 的 DynamoDB 文档,但我无法弄清楚如何在此查询中定位二级索引。它似乎只响应主索引。

表说明:`

tableDescription: {
  attributeDefinitions: {
    {
      "attributeName": "myAttr",
      "attributeType": "S"
    },
    {
      "attributeName": "id",
      "attributeType": "S"
    }
  },
...
  "tableName": "myTable",
...
  "globalSecondaryIndexes": [
    {
      "indexName": "idx_global_ myAttr",
      "keyType": "HASH"
    }
  ]
...
}

`

查询请求:

`
var attributeValue = new AttributeValue().withS(value);
var expressionAttributeValueMap = Map.of(":v1", attributeValue);
var queryRequest = new QueryRequest("myTable")
  .withExpressionAttributeValues(expressionAttributeValeMap)
  .withKeyConditionExpression("myAttr = :v1");
`
4

1 回答 1

0

解决了:

通过添加 .withIndex("idx_global_myAttr") 到 QueryRequest 构建器并使用 KeyCondidtionExpression 中的属性名称(“myAttr”)来指定 QueryRequest 用于哪个索引。

于 2019-02-22T17:53:57.820 回答