Amazon dynamodb 查询dynamodb进行文本搜索?
我希望优化dynamodb操作,即删除扫描并使用查询快速获取数据 表数据:Amazon dynamodb 查询dynamodb进行文本搜索?,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我希望优化dynamodb操作,即删除扫描并使用查询快速获取数据 表数据: itemId itemName itemOwners hash1 abc [user1, user2] hash2 abcd [user1, user3] hash3 xyz [user2, user3] 我必须使用项目名称进行项目搜索。 现在,我们扫描整张桌子 let getItems = { TableName: ItemsTable, Fil
itemId itemName itemOwners
hash1 abc [user1, user2]
hash2 abcd [user1, user3]
hash3 xyz [user2, user3]
我必须使用项目名称进行项目搜索。
现在,我们扫描整张桌子
let getItems = {
TableName: ItemsTable,
FilterExpression: 'contains (#itemName, :searchValue)',
ExpressionAttributeNames: { '#itemName': 'itemName' },
ExpressionAttributeValues: { ':searchValue': searchValue },
};
let items = await docClient.scan(getItems).promise();
然后,如果itemOwners包含搜索用户的用户ID,我们将过滤items结果
我想知道是否有更好的方法使用dynamodb执行此搜索查询?在dynamodb中执行
包含
时,如果不使用过滤条件,则没有更好的方法。DynamoDB并不是真正为全文搜索而设计的。然而,有一种方法可以从DynamoDB中实现某种程度的文本搜索功能。我不是建议你应该,但你可以。基本上,您可以为要包含在搜索中的每个单词/项目组合创建一个记录。这不允许部分单词匹配,但这是获得完整单词匹配的一种方法。当然,这需要对所有数据进行预处理,以使其可用于搜索。如果您决定这样做,我建议您使用DynamoDB streams来管理更新搜索数据。每次从数据库中插入/更新/删除项目时,都可以运行lambda来更新该项目的搜索记录。再说一遍,我不是建议你这么做,但你可以
我建议调查CloudSearch作为替代方案