使用QuerySpec对索引进行查询时,Dynamodb排序不起作用

时间:2019-06-21 13:11:17

标签: java dynamodb-queries

我是Dynamodb的新手,下面有一张桌子

Primary partition key    id (String)
Primary sort key    partition_id (Number)
GSI             status (String) 

我正在尝试根据ID和状态获取记录,但按partition_id的排序顺序

Iterator<Item> iter = index.query(new QuerySpec()
                .withKeyConditionExpression("#f = :status")
                .withFilterExpression(#id = :id)
                .withNameMap(new NameMap().with("#f", status ).with("#id", ID))
                .withValueMap(new ValueMap()
                        .withString(":status", "SENT")
                        .withString(":id", "1d081455-d333-4bb8-b541-6e8fec58013d"))
                ).iterator();

查询工作正常,但是我没有得到排序后的结果。你能告诉我缺少什么吗?

我尝试了.withScanIndexForward(true)之类的选项 .withMaxResultSize(1)

但没有效果。

1 个答案:

答案 0 :(得分:0)

就像您的主要hash_key和sort_key一样,您需要为GSI定义hash_key和sort_key,然后使用GSI的hash_key进行查询并根据GSI的sort_key进行排序

引用:https://aws.amazon.com/blogs/database/how-to-use-dynamodb-global-secondary-indexes-to-improve-query-performance-and-reduce-costs/