elasticsearch @searchable注解的AWS放大过滤器

r8xiu3jd  于 2022-12-17  发布在  ElasticSearch
关注(0)|答案(2)|浏览(114)

目前我正在使用DynamoDB示例作为我的社交媒体应用程序。在设计模式时,我坚持“一个表”的规则。所以我把所有数据放在同一个表中,比如帖子、用户、评论等。
现在我想对数据进行灵活的查询,我发现我可以使用**@searchable注解为一个用@model注解的表创建一个Elastic Search示例
在我的GraphQL模式中,我只有一个@model,因为我只有一个表。我现在的问题是,我不想让表中的所有内容都是可搜索的,因为这很可能会非常昂贵。有些数据不必添加到 Elastic Search 示例中(例如评论相关数据)。
我该如何处理它?我真的必须将我的模式拆分成多个表才能管理
@searchable**注解吗?我不能决定是否应该在Partitionkey / Primarykey的帮助下将该行存储到ElasticSearch中,就像过滤器一样吗?

kognpnkq

kognpnkq1#

amplify-cli的当前实现使用了一个预定义的pythonLambda,当我们将**@searchable指令添加到其中一个模型中时,就会添加这个预定义的pythonLambda
无法编辑
Lambda代码,并且当前没有定义自定义Lambda的选项,您已了解相关信息
https://github.com/aws-amplify/amplify-cli/issues/1113
https://github.com/aws-amplify/amplify-cli/issues/1022
如果你想要一个自定义的
Lambda**,你可以过滤进入Elasticsearch示例的内容,你可以按照www.example.com描述的步骤操作https://github.com/aws-amplify/amplify-cli/issues/1113#issuecomment-476193632
最接近的方法是在amplify\backend\api\myapiname\stacks\中创建一个模板,您可以在其中管理与Elasticsearch相关的所有资源。
1.将**@searchable添加到schema.grapql中的一个模型中
1.运行amplify api gql-compile
1.将 build 文件夹中生成的模板\amplify\backend\api\myapiname\build\stacks\SearchableStack.json复制到amplify\backend\api\myapiname\stacks\
1.从步骤1中添加的模型中删除
@searchable指令
1.开始编辑在步骤3中复制的新模板
1.添加
Lambda并在模板中将其用作DynamoDB Stream的解析器
使用此方法将使您能够完全控制与
Elasticsearch服务**相关的资源,但也需要您自己完成所有操作。
或者,只需为每个模型创建一个表。
希望能有所帮助

nkhmeac6

nkhmeac62#

现在也可以覆盖生成的流功能代码。
感谢AWS支持部门提供的信息
我也在相关的github问题上留言https://github.com/aws-amplify/amplify-category-api/issues/437#issuecomment-1351556948
你只需要跑

  • 放大覆盖API
  • 编辑相应的覆盖.ts

使用resources.opensearch.OpenSearchStreamingLambdaFunction.code更改代码

resources.opensearch.OpenSearchStreamingLambdaFunction.functionName = 'python_streaming_function';
resources.opensearch.OpenSearchStreamingLambdaFunction.handler = 'index.lambda_handler';
resources.opensearch.OpenSearchStreamingLambdaFunction.code = {
    zipFile: `
# python streaming function customized code goes here
`
}

参考资料:[1] https://docs.amplify.aws/cli/graphql/override/#customize-amplify-generated-resources-for-searchable-opensearch-directive
[2]AWS::Lambda::函数代码-属性-https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#aws-properties-lambda-function-code-properties

相关问题