Ich schreibe eine App mit der Menschen Informationen über bestimmte Ereignisse anfordern können. Da mehrere Benutzer Informationen über dasselbe Ereignis anfordern können, ist der Schlüssel für meine Anforderungstabelle Benutzername + Ereignis (wobei beide Zeichenfolgen sind).Wie frage ich einen sekundären Index auf DynamoDB in Java
Allerdings möchte ich im Java-Code, der diese Informationen liefert, keine Daten herunterladen, die ich nicht brauche, idealerweise würde ich nach dem Ereignis fragen (da ich die Benutzernamen von allen nicht kenne) die Leute, die die Frage stellen).
Ich dachte, wenn ich der Request-Tabelle einen sekundären Index namens "Ereignis" gab, die die Benutzer auch ausgefüllt (so der Hash-Schlüssel ("Schlüssel" genannt) ist Benutzername + Ereignis, und das Ereignisfeld ist nur die Ereigniszeichenfolge), konnte ich den Sekundärindex abfragen und alle Anfragen für dieses Ereignis erhalten.
Hier ist der Code:
Map<String, Condition> keyConditions = new HashMap();
keyConditions.put("event", new Condition()
.withComparisonOperator(EQ)
.withAttributeValueList(new AttributeValue().withS(event)));
QueryRequest one = new QueryRequest()
.withTableName(REQ_TABLE)
.withIndexName("event")
.withKeyConditions(keyConditions);
QueryResult queryResult = dynamoDB.query(one);
Alles, was ich aber bekommen, ist diese Fehlermeldung: com.amazonaws.AmazonServiceException: Abfragebedingungsschlüssel Schema-Element verpasst: key
den Anruf zu withIndexName Entfernen ("Ereignis") macht keinen Unterschied.
Ich habe NoSQL vor dieser Woche nicht verwendet, was ein Teil des Problems sein könnte.
können Sie auch den vollständigen Stack-Trace buchen? – rpmartz