查询具有不区分大小写条件的DynamoDB

时间:2017-05-31 11:51:15

标签: amazon-web-services amazon-dynamodb

我们将组织名称存储在AWS上的DynamoDB表中,并希望在这些商业名称中保留官方大写,例如“TNT”和“FedEx”。

我们的用例是应用程序的用户可以按名称搜索组织,但我们希望他们的查询被解释为不区分大小写。因此,对“FedEx”,“Fedex”或“fedex”的查询都应该返回表中的正确项目。

其他数据库有办法执行忽略大小写的查询(例如PostgreSQL中的ILIKE关键字),通过正则表达式表达查询,或者通过在条件中应用函数(例如{{1}功能)。

如何在DynamoDB中完成此操作? documentation on Amazon DynamoDB's Query没有提供答案。

(最好的解决方法似乎是将名称存储两次:一次使用官方大写,一次使用名称转换为小写的另一个字段。然后应在后一个字段上进行搜索,查询搜索词也转换为小写。是的,我知道它为表增加了冗余。这是一种解决方法,而不是最佳解决方案。)

2 个答案:

答案 0 :(得分:10)

是的,确切地说,当您添加新项目/行时,还要添加一个新字段searchName,即您的名称字段的小写字母(甚至更多,可能只是字母/数字/空格)。然后按该searchName字段搜索

答案 1 :(得分:3)

在dynamodb中编写重复数据并不是一个好的设计。最好的解决方案是为dynamodb添加“弹性搜索”。您可以使用aws控制台“开箱即用”连接此组件。然后在弹性搜索中使用自定义anayzer来获取不区分大小写的数据。