2017-02-23 28 views
1

パーティションキーを使用せずに複数の列でDynamo DBを検索したいとします。AWSでDynamo DBを検索

私はmysqlのようにユースケースを実装しようとしていますが、カラム型の値を持つカラムを検索することができます。しかし、同じユースケースがDynamo DBで満足できないことを知りました。

これは、Dynamo DBでこれを実現する方法です。

助けていただけたら幸いです!

+0

あなたはhttp://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan([この]を見てきました.Query) –

+1

パーティションキーなしでデータをフィルタリングするかどうかをスキャンする必要があります。 http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.04.html#GettingStarted.NodeJs.04.Scanを参照してください。 – notionquest

答えて

0

テーブルの内容を、DynamoDBストリームとAWS ElasticSearchクラスタにテーブルの更新を書き込むAWSラムダ関数を使用してインデックスすると、任意の検索をサポートできます。次のようにLocal Search Indexes - PHP Low Level APIのAWS文献で与えられ当たり一例として

0

、ソートキー条件の

有効な比較は、次のとおり

  • sortKeyName = sortkeyval - 真ソートキー値が等しい場合to:sortkeyval。
  • sortKeyName <:sortkeyval - ソートキーの値がsortkeyvalより小さい場合はtrueです。
  • sortKeyName < = sortkeyval - ソートキーの値が以下の場合はtrue:sortkeyval。
  • sortKeyName>:sortkeyval - ソートキーの値がsortkeyvalより大きい場合はtrueです。
  • sortKeyName> =:sortkeyval - ソートキーの値がより大きいか等しい場合はtrue:sortkeyval。
  • sortKeyName BETWEEN:sortkeyval1 AND:sortkeyval2 - ソートキーの値がsortkeyval1以上で、 以下、つまりsortkeyval2以下の場合はtrueです。
  • starts_with(sortKeyName、:sortkeyval) - ソートキーの値が特定のオペランドで始まる場合はtrueです。 (あなたはNumber型でソートキーと、この機能 を使用することはできません。)

関数名BEGINS_WITHは、大文字と小文字が区別されていること。

したがって、の範囲のみがサポートされています。 ORはありません。また、beginning_withを試してみることもできます。

あなたのシナリオは、次のコードに変換することができます:

$tableName = "genericTable"; 
$response = $dynamodb->query([ 
    'TableName' => $tableName, 
    'IndexName' => 'OrderCreationDateIndex', 
    'KeyConditionExpression' => 'hashkey = :h_key and columnName = :value', 
    'ExpressionAttributeValues' => [ 
     ':h_key' => ['S' => 'foo'], 
     ':value' => ['S' => 'bar'] 
    ], 
    'Select' => 'ALL_PROJECTED_ATTRIBUTES', 
    'ScanIndexForward' => false, 
    'ConsistentRead' => true, 
    'Limit' => 5, 
    'ReturnConsumedCapacity' => 'TOTAL' 
]); 
関連する問題