パーティションキーを使用せずに複数の列でDynamo DBを検索したいとします。AWSでDynamo DBを検索
私はmysqlのようにユースケースを実装しようとしていますが、カラム型の値を持つカラムを検索することができます。しかし、同じユースケースがDynamo DBで満足できないことを知りました。
これは、Dynamo DBでこれを実現する方法です。
助けていただけたら幸いです!
パーティションキーを使用せずに複数の列でDynamo DBを検索したいとします。AWSでDynamo DBを検索
私はmysqlのようにユースケースを実装しようとしていますが、カラム型の値を持つカラムを検索することができます。しかし、同じユースケースがDynamo DBで満足できないことを知りました。
これは、Dynamo DBでこれを実現する方法です。
助けていただけたら幸いです!
テーブルの内容を、DynamoDBストリームとAWS ElasticSearchクラスタにテーブルの更新を書き込むAWSラムダ関数を使用してインデックスすると、任意の検索をサポートできます。次のようにLocal Search Indexes - PHP Low Level APIのAWS文献で与えられ当たり一例として
、ソートキー条件の
有効な比較は、次のとおり
- 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'
]);
あなたはhttp://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan([この]を見てきました.Query) –
パーティションキーなしでデータをフィルタリングするかどうかをスキャンする必要があります。 http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.04.html#GettingStarted.NodeJs.04.Scanを参照してください。 – notionquest