首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于@searchable注释的AWS放大滤波器

用于@searchable注释的AWS放大滤波器
EN

Stack Overflow用户
提问于 2019-08-20 20:36:49
回答 1查看 1.1K关注 0票数 0

目前,我正在为我的社交媒体应用程序使用一个DynamoDB实例。在设计模式时,我粘贴到“一个表”规则。所以我把所有的数据放在同一个表格里,比如帖子,用户,评论等等。

现在,我想对我的数据进行灵活的查询。我发现可以使用@searchable注释为一个表创建一个弹性搜索实例,该表带有@model注释

在我的GraphQL模式中,我只有一个@model,因为我只有一个表。我现在的问题是,我不想让表中的所有东西都可以搜索,因为这很可能非常昂贵。有些数据不需要添加到弹性搜索实例中(例如,与注释相关的数据)。

我该怎么处理呢?我真的需要将我的模式分解成多个表才能管理@searchable注释吗?我不能决定在Partitionkey / Primarykey的帮助下,行是否应该存储到弹性搜索中,就像过滤器一样?

EN

回答 1

Stack Overflow用户

发布于 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\相关的所有资源。一个好的起点是

  1. schema.grapql中的一个模型中添加@searchable
  2. 运行amplify api gql-compile
  3. 将生成的模板复制到build文件夹\amplify\backend\api\myapiname\build\stacks\SearchableStack.jsonamplify\backend\api\myapiname\stacks\
  4. 从步骤1中添加的模型中删除@searchable指令
  5. 开始编辑步骤3中复制的新模板。
  6. 添加Lambda并在模板中使用它作为DynamoDB Stream的解析器

使用这种方法将使您完全控制与Elasticsearch服务相关的资源,但也需要自己完成所有这些工作。

或者,只需为每个模型创建一个表。

希望它能帮上忙

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57581205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档