我在dynamodb中有一个表,有一个主键和两个全局共享索引。例如,表结构如下所示。
// Primary Keys
id -> PK
name -> SK
// Global Shared Index 1
status_one -> S1PK
status_one_time -> S1SK
// Global Shared Index 2
status_two -> S2PK
status_two_time -> S2SK
所以我需要的是我需要知道如何在 withKeyConditionExpression
.
我需要按以下场景过滤数据,
S1PK = :v1 and SK = :v4 and S2PK = :v2 and S2SK <= :v3 S2PK = :v1 and S2SK >= :v2 and S1SK <= :v2
那我怎么做呢?如果我把上面的问题放到 withKeyConditionExpression
它会抛出错误。那么,有没有一种方法可以同时查询包含主键和辅助索引的表呢?我做错什么了?如果有人能帮我,我真的很感激。提前谢谢。
1条答案
按热度按时间brjng4g31#
你不能。dynamodb不是那样工作的。
查询只能访问表或单个索引。
您可以使用scan(),但要意识到这将读取表中的所有记录(您将为此而付费),只需扔掉不匹配的记录。很好的方式来使用您的供应能力。
而且,ddb一次只能读取1mb,所以您可能需要在循环中调用它。
如果这是一种常见的访问模式,则需要重新考虑密钥。或者重新考虑ddb的使用(本身)。一种常见的模式是将数据复制到ElasticSearch以获得更好的搜索功能。