amazon-web-services - DynamoDB 未按排序键排序
问题描述
我正在使用 AWS 控制台学习 Pluralsight 的 DynamoDB Deep Dive 课程。我创建了一个包含以下项目的“消息”表:
创建表时,使用排序键设置主键:
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 进行查询并按降序排序(按评级排序键)时,项目未按顺序排列:
我相信我在创建 GSI 之前添加了一些项目,在创建 GSI 之后添加了一些项目。此时所有项目都已在表中放置至少 30 分钟。
根据教程,项目应按排序(评级)字段的顺序进行排序。看来我遗漏了一些明显的东西。
更新:
自本教程以来,控制台中的 UI 似乎发生了变化。在本教程中,先前版本的结果在属性名称旁边没有排序指示符,如下所示:
现在,结果区域中的每个属性都显示了一个排序指示符,如前所示,这似乎默认为主分区键。
现在,在查询中指定排序似乎充当了在结果标题中选择的排序之后的辅助排序参数。
一个后续问题:AWS 控制台中是否有一种方法可以让结果使用查询的排序而不是结果窗格标题中最后选择的排序?
否则,如果rating
之前单击了标题,则在单击“开始搜索”时会得到以下不直观的结果:
解决方案
推荐阅读
- php - 更改apache端口后url不起作用?
- elasticsearch - 如何从弹性搜索中的术语聚合查询中获取所有 doc_counts 的总和?
- c# - Xamarin Forms - 检测用户何时开始在滚动视图中向下滚动
- ionic-framework - 离子框架网络插件问题
- python - Django celery 每天在特定时间运行周期性任务
- azure-cosmosdb - 在 Azure 搜索中创建数据源时如何指定特定的 Azure Cosmos Db 区域副本
- ionic3 - 在执行 API 之前等待 Promise 中的值 - 错误:预期 1 个参数,但得到 0
- swift - 从 Vapor 3 中的作业访问服务
- sql - MS Access 对一行中的单列求和
- kotlin - 如何通过上下滑动重新排列我的 recyclerview 项目的顺序?