我想在Dynamo DB中搜索多列而不使用分區鍵。使用AWS在Dynamo DB中搜索
我想實現用例,因爲我們有在MySQL一樣,我們可以用列類型值的任何列搜索結束。但是,因爲我知道Dynamo DB無法滿足相同的用例。
,有沒有辦法在迪納摩DB來實現這一目標。
任何幫助,將不勝感激!
我想在Dynamo DB中搜索多列而不使用分區鍵。使用AWS在Dynamo DB中搜索
我想實現用例,因爲我們有在MySQL一樣,我們可以用列類型值的任何列搜索結束。但是,因爲我知道Dynamo DB無法滿足相同的用例。
,有沒有辦法在迪納摩DB來實現這一目標。
任何幫助,將不勝感激!
可以支持任意的搜索,如果你指數使用DynamoDB流和寫入表更新到AWS ElasticSearch集羣的AWS lambda表達式的表的內容。
按照實施例給出的Local Search Indexes - PHP Low Level API AWS文獻,
用於排序關鍵條件有效的比較如下:
- sortKeyName =:sortkeyval - 如果排序鍵的值等於到:sortkeyval。
- sortKeyName <:sortkeyval - 真,如果排序關鍵字值小於:sortkeyval。
- sortKeyName < =:sortkeyval - 如果排序鍵的值小於或等於:sortkeyval。
- sortKeyName>:sortkeyval - 如果排序關鍵字值大於:sortkeyval,則返回true。
- sortKeyName> =:sortkeyval - 如果排序關鍵字值大於或等於:sortkeyval,則爲true。
- sortKeyName BETWEEN:sortkeyval1 AND:sortkeyval2 - 如果排序關鍵字值大於或等於:sortkeyval1且小於 或等於sortkeyval2,則爲true。
- BEGINS_WITH(sortKeyName,:sortkeyval) - 如果排序關鍵字值與特定的操作數開始真。 (您不能使用此功能 與是Number類型排序關鍵字。)
注意,函數名BEGINS_WITH是區分大小寫的。
所以,只有和支持範圍。 沒有OR。你也可以嘗試使用starts_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