2017-06-15 13 views
0

HashKey(Id)、SortKey(タイムスタンプ)、グローバルセカンダリインデックス(requestId)を使用してデータを検索しようとしていますが、HashKey、ソートキー、グローバルセカンダリインデックスを使用してDynamoDbでデータを検索

public List<EventLogEntity> getOndemandRequestDetails(String vin, String requestId) { 
     LOGGER.debug("processing OndemandRequestDetails based on request id"); 
     PaginatedQueryList<EventLogEntity> paginatedResult = null; 
     String id = vin + UNDERSCORE + GATEWAY_ON_DEMAND_REQUEST; 

     Map<String, AttributeValue> eav = new HashMap<>(); 
     eav.put(":val1", new AttributeValue().withS(id)); 
     eav.put(":val2", new AttributeValue().withS(requestId)); 

     DynamoDBQueryExpression<EventLogEntity> queryExpression = new DynamoDBQueryExpression<>(); 
     queryExpression.withKeyConditionExpression("id = :val1").withFilterExpression("requestId = :val2") 
       .withExpressionAttributeValues(eav).withConsistentRead(false); 

     paginatedResult = dynamoDBMapper.query(EventLogEntity.class, queryExpression); 
     return paginatedResult; 
    } 

私が紛失しているものは何ですか?

答えて

1

照会式にのインデックス名を設定してください。

インデックス名が設定されていない場合は、GSIではなく実際のテーブルを照会しています。

queryExpression.withKeyConditionExpression("id = :val1").withFilterExpression("requestId = :val2") 
       .withExpressionAttributeValues(eav).withConsistentRead(false) 
       .withIndexName("YourGSIIndexName");