2016-06-06 60 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可能會在未來的版本中提供解決方案。