#amazon-web-services #scala #amazon-dynamodb #dynamodb-queries #aws-java-sdk
#amazon-web-services #scala #amazon-dynamodb #dynamodb-запросы #aws-java-sdk
Вопрос:
Я пытаюсь выполнить запрос со вторичным индексом следующим образом
val valMap = new ValueMap()
.withString(":v_source_transaction_id", "843f45ad-cb1d-4f41-9ede-366c9304e447")
//.withString(":source_transaction_trace_id","843f45ad-cb1d-4f41-9ede-366c9304e443")
println(valMap)
//search is defined then extract dates from search.. else continue with simple logic.
val keyConditionExpression = """source_transaction_id =
| :v_source_transaction_id""".stripMargin
val spec = new QuerySpec()
.withProjectionExpression("source_transaction_id, transaction_date")
.withKeyConditionExpression(keyConditionExpression)
.withValueMap(valMap)
.withMaxResultSize(2)
case class DataItems(transaction_date: String)
val itemList = new ListBuffer[DataItems]
val items = table.getIndex("gsi-settlement").query(spec)
println(table.getIndex("gsi-settlement"))
val iterator = items.iterator()
while (iterator.hasNext) {
val next = iterator.next()
itemList = DataItems(next.getString("transaction_date"))
}
itemList.foreach(println)
здесь расчет gsi является вторичным индексом, а идентификатор транзакции источника является первичным ключом, и я получаю следующую ошибку:
[AmazonDynamoDBException: Query condition missed key schema element: source_transaction_id
Комментарии:
1. вы имеете в виду
GSI
secondary Index
?2. @AtulKumar да, его вторичный индекс
Ответ №1:
Попробуйте это :
val keyConditionExpression = """source_transaction_id = :v_source_transaction_id""".stripMargin
В настоящее время ваше keyConditionExpression отображается как
source_transaction_id =
:v_source_transaction_id
Ошибка: AmazonDynamoDBException: Query condition missed key schema element: source_transaction_id
предполагается, что вам не хватает ключа GSI в вашем запросе
Комментарии:
1. это не помогает. если я попытаюсь выполнить запрос с помощью первичного индекса и его ключа раздела.. все работает нормально