2016-06-06 14 views
3

Ist es möglich, in DynamoDB-Tabelle nach einem Unterfeld eines Json-Objekts zu suchen?DynamoDB Abfrage auf Unterfeld von JSON-Objekt

Meine Tabelle:

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

Ursprünglich in dieser Tabelle ItemInformation ein Schlüssel sein würde und für ein Objekt suchen wir die json für die Artikelinformationen und dann abfragen, mit dem JSON-String als Schlüssel konstruieren würde .. Jetzt Wir müssen die Suche nach Unterfeldern dieses Objekts implementieren, die jedes Mal verschiedene Felder enthalten können, dh isDigital: "true".

Ich stelle fest, in der Frage: DynamoDB advanced scan - JAVA

Die Antwort ist nein zu sein scheint, und ich würde die Felder trennen müssen. Aber ich bin neugierig, warum und wie die PHP-Bibliothek nach Sub-Feldern auf einem JSON-Objekt in dynamoDB abfragen kann. Gibt es wirklich keine bessere Lösung als die Spalte als separate Felder zu speichern und dann einen Index für alle Felder hinzuzufügen?

+0

https://forums.aws.amazon.com/thread.jspa?messageID=581700, werfen Sie einen Blick auf dieses Beispiel – Shibashis

Antwort

1

Nach Durchsicht der Dokumentation ist es nicht möglich, die Suchfelder wie ursprünglich geplant zu implementieren. Das Problem ist, dass, während die Werte JSON sind, sie als String-Literale gespeichert werden, so dass ich Refactoring tun muss, um als JSON-Objekte zu speichern. Außerdem kann ich keine Spalten und Indizes hinzufügen, da die Suche auf einer beliebigen Anzahl von Feldern ausgeführt werden kann und unterschiedliche Elemente unterschiedliche Felder haben können, d. H. Ein Element kann Brand, BatteryInformation, Name haben. Da die Anforderung besteht, dass jedes dieser Unterfelder durchsuchbar sein soll, ist es besser, dies in Cloud Search oder ElasticSearch zu tun, wo ich beliebige Felder und Werte innerhalb einer Spalte eines Objekts indizieren und durchsuchen kann.

Da dies eine DynamoDB-Tabelle ist, verwende ich CloudSearch, da es eine einfachere Indexierungsoption und Datenintegration bietet.

0

Im Moment ist die einzige verfügbare Lösung, die Spalte als separate Felder zu speichern. Wahrscheinlich wird aws in zukünftigen Versionen eine Lösung finden.

Verwandte Themen