【问题标题】:AmazonDynamoDBv2 Query not recognizing GSIAmazonDynamoDBv2 查询无法识别 GSI
【发布时间】:2019-02-23 01:53:57
【问题描述】:

当我在 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");
`

【问题讨论】:

    标签: java spring amazon-dynamodb dynamodb-queries amazon-dynamodb-index


    【解决方案1】:

    已解决:

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

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2021-04-06
      • 2013-03-07
      相关资源
      最近更新 更多