簡體   English   中英

使用AWS在Dynamo DB中搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM