Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用多个索引查询DynamoDB?_Java_Amazon Dynamodb_Dynamodb Mapper - Fatal编程技术网

Java 如何使用多个索引查询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 所以我需要的是我需要知道如何在

我在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和SK=:v4和S2PK=:v2和S2SK=:v2和S1SK。DynamoDB不是那样工作的

查询只能访问表或单个索引

您可以使用Scan,但要意识到这将读取表中的每一条记录,并为此收取费用,只需扔掉不匹配的记录即可。这是一个很好的方式来使用您的配置容量

此外,DDB一次只能读取1MB,因此您可能需要在循环中调用它


如果这是一种常见的访问模式,则需要重新考虑密钥。或者重新思考DDB本身的使用。一种常见的模式是将数据复制到弹性搜索,以获得更好的搜索功能。

根据标签判断,OP使用的是dynamodb mapper,它在SDK中对1MB块执行必要的分页。不太可能需要任何循环。非常感谢您的回答和您的时间。我真的很感激。