2016-06-06 62 views
3

是否有可能在dynamoDB表中搜索json对象的子字段?DynamoDB查询JSON对象的子字段

我的表:

Item: "item name", 
Location: {...}, 
ItemInformation : 
{ 
    ItemName: "itemName", 
    ProductLine: { 
     Brand: "Razer", 
     ManufacturerSource: "Razer" 
} 

原来在此表中ItemInformation将是一个关键和搜索对象,我们将构建JSON的项目信息,然后用JSON字符串作为键查询。现在我们需要通过该对象的子字段进行搜索,每次可以包含不同的字段,即isDigital:“true”。

我注意到一个问题: DynamoDB advanced scan - JAVA

答案似乎是没有,我将不得不分离出的字段。但我很好奇为什么以及PHP库如何查询dynamoDB中的JSON对象的子字段。是否真的没有更好的解决方案,然后将该列存储为单独的字段,然后在所有字段上添加索引?

+0

https://forums.aws.amazon.com/thread.jspa?messageID=581700,看看这个例子 – Shibashis

回答

1

通过文档查看后,按照我最初的意图实现搜索字段是不可行的。问题是,虽然值是JSON,但它们存储为字符串文字,所以我必须重构才能开始存储为JSON对象。此外,我不能添加列和索引,因为搜索可以在任意数量的字段上操作,而不同的项目可以具有不同的字段,即一个项目可以具有品牌,电池信息,名称。鉴于要求这些子字段中的任何一个都应该可以搜索,所以在Cloud Search或ElasticSearch中可以做到这一点,我可以在对象列中的任意字段和值上进行索引和搜索。

由于这是一个DynamoDB表,因此我将使用CloudSearch,因为它提供了更简单的索引选项和数据集成。

0

目前,唯一可用的解决方案是将该列存储为单独的字段。 aws可能会在未来的版本中提供解决方案。