首页 > 解决方案 > DynamoDB 未按排序键排序

问题描述

我正在使用 AWS 控制台学习 Pluralsight 的 DynamoDB Deep Dive 课程。我创建了一个包含以下项目的“消息”表:

所有 dyanmodb 表项

创建表时,使用排序键设置主键:

Primary partition key:  |  userid (Number)
Primary sort key:       |  timestamp (Number)

此外,还添加了一个本地二级索引 (LSI),其中 rating 属性作为排序键:

Partition key:          |  userid (Number)
Sort Key:               |  rating (Number)

在创建和添加一些记录后,使用 topicid 和 rating 属性添加了全球二级索引 (GSI):

Partition key:          |  topicid (Number)
Sort Key:               |  rating (Number)

尝试使用 GSI 进行查询并按降序排序(按评级排序键)时,项目未按顺序排列:

按主题 id 查询,项目乱序

我相信我在创建 GSI 之前添加了一些项目,在创建 GSI 之后添加了一些项目。此时所有项目都已在表中放置至少 30 分钟。

根据教程,项目应按排序(评级)字段的顺序进行排序。看来我遗漏了一些明显的东西。


更新:

自本教程以来,控制台中的 UI 似乎发生了变化。在本教程中,先前版本的结果在属性名称旁边没有排序指示符,如下所示:

旧结果表在属性名称旁边没有排序指示符

现在,结果区域中的每个属性都显示了一个排序指示符,如前所示,这似乎默认为主分区键。

现在,在查询中指定排序似乎充当了在结果标题中选择的排序之后的辅助排序参数。

一个后续问题:AWS 控制台中是否有一种方法可以让结果使用查询的排​​序而不是结果窗格标题中最后选择的排序?

否则,如果rating之前单击了标题,则在单击“开始搜索”时会得到以下不直观的结果:

排序服从标题而不是查询的排序参数

标签: amazon-web-servicessortingamazon-dynamodb

解决方案


推荐阅读