AmazonDynamoDBv2 Запрос не распознает GSI - PullRequest
0 голосов
/ 22 февраля 2019

Моя реализация AmazonDynamoDBv2 AmazonDynamoDBAsync.queryAsync с QueryRequest возвращает код 400 «Элемент схемы ключа пропущенного условия запроса ...», когда я запрашиваю GSI.

Я попытался использовать как имя DynamoDBAttribute ("myAttr"), так и фактическое имя индекса GSI ("idx_global_myAttr") и получил один и тот же код ошибки.Это работает с образом Docker "amazon / DynamodB-Local".

Я прочитал документы DynamoDB на GSI, но я не могу понять, как нацелить вторичный индекс в этом запросе.Кажется, он отвечает только на первичный индекс.

Описание таблицы: `

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

`

QueryRequest:

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

1 Ответ

0 голосов
/ 22 февраля 2019

решено:

Укажите индекс для QueryRequest, добавив .withIndex("idx_global_myAttr") в построитель QueryRequest и используйте имя атрибута ("myAttr") в выражении KeyCondidtionExpression.

...