是否可以在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 :(得分:2)
查看文档后,按照我原先的意图实现搜索字段是不可行的。问题是,虽然值是JSON,但它们存储为字符串文字,因此我必须进行重构以开始存储为JSON对象。另外,我无法添加列和索引,因为搜索可以在任意数量的字段上操作,而不同的项可以具有不同的字段,即项可以具有Brand,BatteryInformation,Name。鉴于要求是这些子字段中的任何一个都应该是可搜索的,最好在Cloud Search或ElasticSearch中执行此操作,我可以在其中索引和搜索对象列中的任意字段和值。
由于这是一个DynamoDB表,我将使用CloudSearch,因为它提供了更容易的索引选项和数据集成。
答案 1 :(得分:1)
目前,唯一可用的解决方案是将列存储为单独的字段。也许,aws可能会在未来的版本中提出解决方案。