我可以通过DynamoDB控制台查询GSI,如屏幕截图所示。
当我使用以下代码在终端上使用Boto3运行相同的查询时:
table.query(
IndexName='date-timestamp-index',
KeyConditionExpression=Key('date').eq('20161231'),
FilterExpression=Attr('timestamp').between(1483130000, 1483133600) & Attr('tags').exists()
)
我收到ValidationException
例外:
Filter Expression can only contain non-primary key attributes: Primary key attribute: timestamp
我在这里做错了什么?感谢。
答案 0 :(得分:4)
您的timestamp
字段是表的排序键,因此无法在FilterExpression中使用。它必须是KeyConditionExpression的一部分。