目前,我正在为我的社交媒体应用程序使用一个DynamoDB实例。在设计模式时,我粘贴到“一个表”规则。所以我把所有的数据放在同一个表格里,比如帖子,用户,评论等等。
现在,我想对我的数据进行灵活的查询。我发现可以使用@searchable注释为一个表创建一个弹性搜索实例,该表带有@model注释
在我的GraphQL模式中,我只有一个@model,因为我只有一个表。我现在的问题是,我不想让表中的所有东西都可以搜索,因为这很可能非常昂贵。有些数据不需要添加到弹性搜索实例中(例如,与注释相关的数据)。
我该怎么处理呢?我真的需要将我的模式分解成多个表才能管理@searchable注释吗?我不能决定在Partitionkey / Primarykey的帮助下,行是否应该存储到弹性搜索中,就像过滤器一样?
发布于 2019-08-21 17:19:29
amplify-cli的当前实现使用预定义的python Lambda,一旦我们将@searchable指令添加到我们的模型中,就会添加它。
无法编辑Lambda代码,而且目前无法定义自定义的Lambda,您可以阅读它。
https://github.com/aws-amplify/amplify-cli/issues/1113
https://github.com/aws-amplify/amplify-cli/issues/1022
如果您想要一个自定义的Lambda,可以过滤到Elasticsearch实例的内容,您可以按照这里描述的步骤执行https://github.com/aws-amplify/amplify-cli/issues/1113#issuecomment-476193632
您可以获得的最接近的方法是在amplify\backend\api\myapiname\stacks\中创建一个模板,您可以在其中管理与amplify\backend\api\myapiname\stacks\相关的所有资源。一个好的起点是
amplify api gql-compile\amplify\backend\api\myapiname\build\stacks\SearchableStack.json到amplify\backend\api\myapiname\stacks\中使用这种方法将使您完全控制与Elasticsearch服务相关的资源,但也需要自己完成所有这些工作。
或者,只需为每个模型创建一个表。
希望它能帮上忙
https://stackoverflow.com/questions/57581205
复制相似问题