【发布时间】:2021-03-18 22:29:16
【问题描述】:
我需要在 DynamoDB 表中实现以下实体
我已将这些实体存储在 DynamoDB 中,如下所示。
- 分区键:PROJ#ProjectId:CountryId
- 排序键:项目名称
- 公司:公司数据为 JSON 文档
由于这是一对多的关系,同一公司的 N 个项目将创建 N 个项目记录,并且同一公司的详细信息将存储在其公司属性中。这样做的原因是,最关键的数据访问点是通过 ProjectId 和 CountryId(假设我无法更改此 DB 设计)
我需要实现一个支持使用公司名称、地址、项目名称、国家等过滤表的搜索功能(使用单个过滤器或这些过滤器的任意组合)。我正在使用 DynamoDB 流来提供弹性搜索集群并更新那里的任何创建、删除或更新详细信息,并使用弹性搜索 API 来查询数据。
但我需要将这些数据按以下格式编入索引,这样当我收到弹性搜索的详细信息时,数据不会重复
{
"id" : 1
"name" : "ABC",
"description" : "description",
"address" : "address",
"projects" : [
{
"id" : 10,
"name" : "project 1",
"countryId" : 10
},
{
"id" : 20,
"name" : "project 1",
"countryId" : 10
}
]
}
在创建记录时,由于 Project 记录是作为单个记录创建的,是否有任何推荐或标准的方法可以获取 Company 的所有项目记录和创建上面的json文档并在elasticsearch中建立索引?
【问题讨论】:
-
我建议使用带有公司 ID 的 GSI,因此当您发出查询时,您会传递公司 ID 并获取与公司相关的所有记录。
标签: elasticsearch amazon-dynamodb amazon-dynamodb-streams