使用 HashKey 进行 DynamoDB 搜索
DynamoDB Search with HashKey
我有 table 具有以下结构
HashKey: Place Name
Attribute: Place Data Class
现在我想用地名搜索,
例如:我有以下数据
Newyork {lat: x.xxxxx, lng: x.xxxxxx}
Newzealand {lat: x.xxxxx, lng: x.xxxxxx}
IndialaPolis {lat: x.xxxxx, lng: x.xxxxxx}
当我用关键字 new
搜索时,它应该 return Newyork 和 Newzealand,我搜索 google 为此,我发现我们可以通过 HashKey
在执行 Query
时,您只能在 HashKey
上进行精确匹配。
但是,还有 Scan
操作,您可以将其与 FilterExpression
一起使用。请注意 Query
和 Scan
执行和消耗容量的方式不同。 See the differences here.
以下是您可以在 Scan
和 begins_with
上使用的示例参数:
{
table_name: tableName,
filter_expression: "begins_with(#country, :search)",
expression_attribute_names: {
"#country" => "country"
},
expression_attribute_values: {
":search" => "new"
}
}
这个 article 是一个很好的起点。
谢谢@mark-b 和@bruno-buccolo,正如您所说,无法搜索 hashkey 字段
所以我为那个 table 手动创建了弹性搜索索引,并在每次原始记录更新时进行更新
我有 table 具有以下结构
HashKey: Place Name
Attribute: Place Data Class
现在我想用地名搜索,
例如:我有以下数据
Newyork {lat: x.xxxxx, lng: x.xxxxxx}
Newzealand {lat: x.xxxxx, lng: x.xxxxxx}
IndialaPolis {lat: x.xxxxx, lng: x.xxxxxx}
当我用关键字 new
搜索时,它应该 return Newyork 和 Newzealand,我搜索 google 为此,我发现我们可以通过 HashKey
在执行 Query
时,您只能在 HashKey
上进行精确匹配。
但是,还有 Scan
操作,您可以将其与 FilterExpression
一起使用。请注意 Query
和 Scan
执行和消耗容量的方式不同。 See the differences here.
以下是您可以在 Scan
和 begins_with
上使用的示例参数:
{
table_name: tableName,
filter_expression: "begins_with(#country, :search)",
expression_attribute_names: {
"#country" => "country"
},
expression_attribute_values: {
":search" => "new"
}
}
这个 article 是一个很好的起点。
谢谢@mark-b 和@bruno-buccolo,正如您所说,无法搜索 hashkey 字段
所以我为那个 table 手动创建了弹性搜索索引,并在每次原始记录更新时进行更新