AWS Amplify @searchable指令相关技术咨询
AWS Amplify @searchable指令常见问题解答
问题1:添加@searchable指令后是否会自动启动EC2/OpenSearch实例,空闲时也会产生费用吗?
是的。当你给Amplify API的模型添加@searchable指令后,Amplify会自动部署一个OpenSearch Service集群(底层依赖EC2实例运行)。这个集群会持续保持运行状态,无论有没有查询请求,都会按照实例规格、存储容量等维度产生费用,不会自动休眠或停止。
问题2:保留@searchable指令的前提下,简单查询能否绕开OpenSearch,改用AppSync原生过滤?
完全可以。添加@searchable指令后,Amplify会为模型生成两套查询接口:
- 一套是面向OpenSearch的
search[ModelName]查询,用于高级搜索 - 另一套是AppSync原生的
list[ModelName]查询,保留了原本的简单过滤能力(比如eq、gt、lt、contains等条件)
你只需要在前端或业务代码中调用list[ModelName]系列接口,就能直接使用AppSync的原生过滤逻辑,完全不依赖OpenSearch。@searchable只是额外扩展了搜索能力,不会覆盖或替代AppSync原本的列表查询功能。
问题3:低预算项目中,用Lambda实现高级过滤比OpenSearch更合适吗?
这取决于你的数据规模和查询频率:
- 如果是小数据量(几万条以内)+低查询频率:Lambda更划算。Lambda按调用次数和执行时长计费,空闲时无成本,适合低流量场景。你可以在Lambda中直接查询数据源(比如DynamoDB),然后在代码里实现sum、avg、正则匹配、总数统计等自定义逻辑。
- 如果是大数据量(几十万条以上)+高查询频率:OpenSearch更合适。Lambda处理大数据时需要全表扫描+内存计算,性能会明显下降,而OpenSearch的索引优化能让高级查询更快,虽然有固定的集群运行成本,但长期来看比频繁调用Lambda处理大数据的开销更低。
简单说,小体量、低频次的场景选Lambda;大数据、高频次的场景选OpenSearch。
内容的提问来源于stack exchange,提问作者da45
相关产品推荐
相关产品推荐

