我有一个dynamodb表,该表以字符串格式存储creation_date纪元。此日期既不是哈希键,也不是排序键。最终目标是查询creation_date的范围,即我需要给定时间范围内的所有ID。
表架构为: ID,版本,creation_date,信息。
id是哈希键,版本是排序键。
我当时正在考虑创建一个cloudsearch域并将其链接到dynamodb表。如果日期为字符串格式,是否可以在使用Java的cloudsearch中使用范围查询?如果是,怎么办?
答案 0 :(得分:0)
您可以在DynamoDB中使用哈希键为creation_y_m
且GSI范围键为creation_date
的GSI来完成此操作。
在查询创建日期范围时,需要进行一些日期操作以找出两个日期之间的所有月份,但是您可以使用诸如以下的关键条件表达式查询GSI这个。
creation_y_m = 2019-02 AND creation_date BETWEEN 2019-02-05T12:00.00Z AND 2019-02-18T06:00:00Z
鉴于大多数查询都是两周的查询范围,因此通常只需要进行一两个查询就可以获取所有项目。
您可能需要回填creation_y_m
字段,但是这样做很简单,只需扫描表格并更新每一项以具有新属性即可。
当然,这有很多变化。您可以调整哈希键的粒度(也许只想年份,也许想年月日)。您可以使用纪元时间代替ISO 8601字符串。