AWS错误代码:ValidationException,AWS错误消息:全局二级索引不支持一致性读取

Aj *_*ast 8 amazon-dynamodb

我开始使用Amazon DynamoDB并遇到查询问题.

我有一个表Dev_Testgame1_Mail,id为主哈希键,后面是三个全局二级索引,

  1. fromPlayerId(哈希键)
  2. toPlayerId(哈希键)+ isRead(范围键)
  3. toPlayerId(哈希键)+ endDate(范围键)

我有上面的代码来做查询,

**DynamoDBMail hashKObject = new DynamoDBMail();
            hashKObject.setToPlayerId(playerId);
Condition endDateRangeKeyCondition = new Condition();
            //endDateRangeKeyCondition.withComparisonOperator(ComparisonOperator.NULL).withAttributeValueList(new AttributeValue().withB(Utils.convertDateToByteBuffer(DateUtil.getUtcDateTime())));
            endDateRangeKeyCondition.withComparisonOperator(ComparisonOperator.NULL);

            DynamoDBQueryExpression<DynamoDBMail> queryExpression = new DynamoDBQueryExpression<DynamoDBMail>();
            queryExpression.withHashKeyValues(hashKObject).withRangeKeyCondition("endDate", endDateRangeKeyCondition);
            queryExpression.withIndexName("gsi_tp_enddt").withLimit(pageSize).withScanIndexForward(false);
            return dynamodbMapper.queryPage(DynamoDBMail.class, queryExpression, new DynamoDBMapperConfig(TableNameOverride.withTableNamePrefix(Utils.getDynamoDBTableNamePrefix(gameId, env))));**
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

com.amazonaws.AmazonServiceException:状态代码:400,AWS服务:AmazonDynamoDBv2,AWS请求ID:GUUBV24K2O40T276R9NNN0EKB7VV4KQNSO5AEMVJF66Q9ASUAAJG,AWS错误代码:ValidationException,AWS错误消息:全局二级索引不支持一致读取

在这个问题上非常感谢您的帮助.

谢谢阿伦

rpm*_*rtz 15

设置queryExpressionto 的一致read属性false.把这一行:

queryExpression.withConsistentRead(false);
Run Code Online (Sandbox Code Playgroud)

要么

queryExpression.setConsistentRead(false);
Run Code Online (Sandbox Code Playgroud)

在你打电话之前

return dynamodbMapper.queryPage(DynamoDBMail.class, queryExpression, new DynamoDBMapperConfig(TableNameOverride.withTableNamePrefix(Utils.getDynamoDBTableNamePrefix(gameId, env))));
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我认为你NULL RangeKeyCondition没有为你做任何事情.