[英]Searching in Dynamo DB with AWS
我想在不使用分區鍵的情況下在多列上搜索Dynamo DB。
我正在嘗試實現我們在mysql中的用例,就像我們可以搜索具有列類型值的任何列。 但是,正如我所知,Dynamo DB無法滿足相同的用例。
有沒有辦法在Dynamo DB中實現這一目標。
任何幫助,將不勝感激!
如果使用DynamoDB Stream和將表更新寫入AWS ElasticSearch集群的AWS Lambda函數索引表的內容,則可以支持任意搜索。
根據本地搜索索引的 AWS文檔中給出的示例- PHP低級API ,
排序鍵條件的有效比較如下:
- sortKeyName =:sortkeyval - 如果排序鍵值等於:sortkeyval,則為true。
- sortKeyName <:sortkeyval - 如果排序鍵值小於:sortkeyval,則為true。
- sortKeyName <=:sortkeyval - 如果排序鍵值小於或等於:sortkeyval,則為true。
- sortKeyName>:sortkeyval - 如果排序鍵值大於:sortkeyval,則為true。
- sortKeyName> =:sortkeyval - 如果排序鍵值大於或等於:sortkeyval,則為true。
- sortKeyName BETWEEN:sortkeyval1 AND:sortkeyval2 - 如果排序鍵值大於或等於:sortkeyval1且小於或等於:sortkeyval2,則為true。
- starts_with(sortKeyName,:sortkeyval) - 如果排序鍵值以特定操作數開頭,則為true。 (您不能將此函數與Number類型的排序鍵一起使用。)
請注意 ,函數名稱starts_with區分大小寫。
因此,只有AND支持范圍。 沒有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'
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.