Java dynamo数据库中不区分大小写的查询

Java dynamo数据库中不区分大小写的查询,java,amazon-dynamodb,Java,Amazon Dynamodb,我想扫描/查询dynamo DB表。Dynamo DB区分大小写。有时我想使用散列/范围键作为字符串。我们有没有办法在dynamo DB级别启用案例不敏感?或者还有其他解决方案吗?我正在用JAVA SDK查询Dynamo,我可以想到两种可能的方法 1)通过调整模式在应用程序端解决问题 e、 假设您现在将“Name”作为散列键,每当添加新用户时,您都会在以小写字母命名后添加他们 John --> john Doe --> doe 记住将值(name作为散列进行搜索)和(displa

我想扫描/查询dynamo DB表。Dynamo DB区分大小写。有时我想使用散列/范围键作为字符串。我们有没有办法在dynamo DB级别启用案例不敏感?或者还有其他解决方案吗?我正在用JAVA SDK查询Dynamo,我可以想到两种可能的方法

1)通过调整模式在应用程序端解决问题

e、 假设您现在将“Name”作为散列键,每当添加新用户时,您都会在以小写字母命名后添加他们

John --> john

Doe --> doe
记住将值(
name
作为散列进行搜索)和(
displayName
用于显示)

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


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

正如其他答案所提到的,ElasticSearch似乎是一个不错的选择。然而,当我遇到类似的情况时,我就是这样解决的

我创建了一个新属性只是为了搜索。我将要搜索的值(小写)存储在此属性中,并通过使用“CONTAINS”运算符进行查询进行搜索

如果我有以下项目:

id: 1
username: 'fsmith'
first_name: 'Franco'
last_name: 'Smith'
id:1
username: 'fsmith'
first_name: 'Franco'
last_name: 'Smith'
search_term: 'franco_smith_fsmith'
现在,为了进行搜索,当我存储项目时,我使用新创建的属性“search\u term”存储它,如下所示:

id: 1
username: 'fsmith'
first_name: 'Franco'
last_name: 'Smith'
id:1
username: 'fsmith'
first_name: 'Franco'
last_name: 'Smith'
search_term: 'franco_smith_fsmith'
现在,如果我必须搜索一个名为Franco Smith的用户,我只需进行一个查询,并使用FilterExpression作为(boto3和python中的代码):


但是,根据您的使用案例或场景,此解决方案可能不是非常有效,因为它使用查询,并且您将根据排序键条件根据读取的项目收取相应的费用。

请您指向特定页面,在那里我可以找到有关将DynamoDB与ElasticSearch集成的文档??感谢AWS还有一个叫做CloudSearch的选项,您可以查看比较重复问题: