DynamoDB在地图或列表类型上创建索引

时间:2015-05-15 14:14:17

标签: amazon-web-services amazon-dynamodb

我正在尝试为DynamoDB中的地图对象内的属性添加索引,但似乎找不到这样做的方法。这是支持的东西还是索引真的只允许标量值?围绕这个的文档似乎非常稀少。我希望索引功能类似于MongoDB,但到目前为止,我使用点语法引用属性索引的方法还没有成功。可以提供任何帮助或其他信息。

2 个答案:

答案 0 :(得分:29)

索引只能在顶级JSON属性上构建。此外,范围键必须是DynamoDB中的标量值(String,Number,Binary或Boolean之一)。

来自http://aws.amazon.com/dynamodb/faqs/

  

问:在DynamoDB中查询JSON数据有什么不同吗?

     

没有。您可以创建全局二级索引或本地二级索引   在任何顶级JSON元素上。例如,假设您存储了一个JSON   包含有关某人的以下信息的文档:   名字,姓氏,邮政编码,以及他们所有朋友的名单。   名字,姓氏和邮政编码将是顶级JSON元素。   您可以创建一个索引,以便您根据名字,姓氏进行查询   名称或邮政编码。朋友列表不是顶级元素,   因此,您无法索引朋友列表。欲获得更多信息   有关全局二级索引及其查询功能,请参阅   本FAQ中的二级索引部分。

     

问:可以索引哪些数据类型?

     

所有标量数据类型(数字,字符串,二进制和布尔值)都可以   用于本地二级索引键的范围键元素。组,   列表和地图类型无法编入索引。

答案 1 :(得分:0)

我尝试分别存储对象时执行hash(str(object))。该哈希为我提供了一个整数(数字),并且我可以在其上使用二级索引。这个想法是要使整个对象较小,而实体仍保持完整。也就是说,不是将对象序列化和存储为字符串并改变了对象的使用方式,而是将较小的哈希值与实际列表或映射一起存储。