10

是否可以使用 batchgetitem api 从 dynamodb 全局二级索引中检索行?如果我的目标是也基于一些非键属性从主表中检索数据,但数据应该在 100 个项目的批次中检索 - GSI 索引是否不适合这里?

BatchItemGet API 也可用于查询吗?假设一个表具有主键和排序键,并且相同的主键可以有多个排序键我可以使用仅主键的 batchItemGet 检索多个主键,还是不会在这里使用?

4

2 回答 2

3

无法BatchGetItem根据文档在 API 操作中指定索引名称。这意味着在二级索引上使用BatchGetItem(并且GetItem就此而言)是不可能的。这两个都在主索引上运行。

如果要从二级索引中检索数据,则需要使用Queryor ScanIndexName根据文档,两者都支持该属性。使用时,Query您必须指定分区键,并且可以选择基于排序键进行过滤。如果您不对排序键进行过滤,您将获得所有带有分区键的项目,这应该可以满足您的第二个要求。

要根据不同的分区键从二级索引中检索数据,您需要对Query这些键的单独值发出多个操作,这里没有批处理。

于 2021-02-24T13:59:33.093 回答
1

您可以为此使用 PartiQL withWHERE IN子句:

SELECT * FROM Orders WHERE OrderID IN [100, 300, 234]

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html

于 2021-09-01T17:02:20.563 回答