我正在阅读有关二级索引的AWS文档,但我不理解以下声明:
索引键不需要具有来自 桌子
据我了解,GSI允许我在创建表后的角色上创建主键或排序键。
我想确保我理解上面的陈述,这是否完全意味着我可以在与当前表的主键/哈希键不同的属性上创建主键或排序键?
答案 0 :(得分:2)
是的,这就是它的意思。假设您有一个表,该表的复合主键由bundle_id
作为分区键,而item_id
作为排序键。假设您在该表中还有一个名为client_id
的属性。
然后您可以创建一个GSI,以client_id-index
作为其分区键来命名为client_id
,并且您也可以在GSI中包含其他一些属性。
然后,您可以像这样查询GSI(使用Python和Boto3的代码示例)
table.query(
IndexName='client_id-index',
KeyConditionExpression=Key('client_id').eq("123456")
)
请注意,即使您在GSI中将ProjectionType
指定为INCLUDE
,并且包含一些非关键属性,该表中的关键属性也将包含在您的GSI中。