Java 如何使用多个索引查询DynamoDB?
我在DynamoDB中有一个表,有一个主键和两个全局共享索引。例如,表结构如下所示Java 如何使用多个索引查询DynamoDB?,java,amazon-dynamodb,dynamodb-mapper,Java,Amazon Dynamodb,Dynamodb Mapper,我在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 所以我需要的是我需要知道如何在
// 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和SK=:v4和S2PK=:v2和S2SK=:v2和S1SK。DynamoDB不是那样工作的 查询只能访问表或单个索引 您可以使用Scan,但要意识到这将读取表中的每一条记录,并为此收取费用,只需扔掉不匹配的记录即可。这是一个很好的方式来使用您的配置容量 此外,DDB一次只能读取1MB,因此您可能需要在循环中调用它
如果这是一种常见的访问模式,则需要重新考虑密钥。或者重新思考DDB本身的使用。一种常见的模式是将数据复制到弹性搜索,以获得更好的搜索功能。根据标签判断,OP使用的是dynamodb mapper,它在SDK中对1MB块执行必要的分页。不太可能需要任何循环。非常感谢您的回答和您的时间。我真的很感激。