dynamo DB

时间:2016-01-21 10:31:43

标签: java amazon-dynamodb

我想扫描/查询dynamo数据库表。 Dynamo DB区分大小写。我想有时使用哈希/范围键作为字符串。有没有什么办法可以在发电机数据库级别中启用不区分大小写?或者还有其他解决方案吗?我正在使用JAVA SDK查询Dynamo

2 个答案:

答案 0 :(得分:8)

我有两种可能的想法

1)通过调整架构来解决应用程序端

例如,假设你有"姓名"现在,只要添加新用户,就可以使用哈希键,在以小写

命名后添加它们
John --> john

Doe --> doe

请记住将值(name存储为搜索的哈希值)和(displayName用于显示目的)

现在,在查询数据库之前,您可以将搜索转换为小写。

2)使用ElasticSearch: DyanmoDB表可以与ElasticSearch集成,ElasticSearch可以对您的表执行不同的搜索操作(refer link

答案 1 :(得分:0)

正如其他答案所述,ElasticSearch似乎是一个不错的选择。但是,当我遇到类似情况时,这就是解决问题的方法。

我创建了一个仅用于搜索的新属性。我将要搜索的值以小写形式存储在此属性中,并使用“ CONTAINS”运算符查询来进行搜索。

例如如果我有以下物品:

id: 1
username: 'fsmith'
first_name: 'Franco'
last_name: 'Smith'

现在可以进行搜索了,当我存储项目时,我将其存储为新创建的属性“ search_term”,如下所示:

id:1
username: 'fsmith'
first_name: 'Franco'
last_name: 'Smith'
search_term: 'franco_smith_fsmith'

现在,如果我必须搜索名称为Franco Smith的用户,我只需进行查询并使用FilterExpression as(boto3和python中的代码):

FilterExpression = Attr('search_term').contains('franco') and Attr('search_term').contains('smith')

但是,由于此解决方案使用查询,因此根据您的用例或方案,该解决方案可能不是很有效,并且会根据排序键条件向您收取相应的费用。