запрос на ключ сортировки GSI и значения фильтрации меньше текущего времени

#java #amazon-dynamodb #java-11

Вопрос:

У меня есть проблема, в которой мне нужно получить все данные, которые старше 5 дней с текущей отметки времени .

Я создаю GSI на отметке времени обновления , теперь я хочу отфильтровать/запросить GSI, чтобы извлечь все записи менее чем за 5 дней .

 Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
    eav.put(":val1", new AttributeValue().withS(getCurrentDateTimeInUTC()));

    DynamoDBQueryExpression<GuaranteedWakeup> queryExpression = new DynamoDBQueryExpression<GuaranteedWakeup>()
        .withIndexName(Constants.UPDATE_TIMESTAMP_GSI_NAME)
        .withConsistentRead(false)
        .withKeyConditionExpression("updateTimestamp < :val1")
        .withExpressionAttributeValues(eav);
//    DynamoDBScanExpression scanExpression = new DynamoDBScanExpression().withConsistentRead(true);
    List<GuaranteedWakeup> scanResult = mapper.query(GuaranteedWakeup.class, queryExpression);
 

Я получаю исключение в качестве условия ключа запроса, которое не поддерживается при неправильном запросе . как я могу добиться того же самого?