我想在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