在AppSync GraphQL Schema(基于DynamoDB)中配置全局二级索引
在AppSync GraphQL Schema中添加DynamoDB全局二级索引(GSI)
1. 如何添加指定的GSI
你可以通过@index指令在模型定义中直接声明目标GSI,指定分区键为featuredPost、排序键为title。结合你现有的主键(id)和排序键(sk)配置,完整的模型示例如下:
type Post @model(keys: [ { name: "primaryKey", fields: ["id"] }, { name: "id-sk", fields: ["id", "sk"] } ]) @index( name: "FeaturedPostByTitle" # 自定义GSI名称,便于后续识别 fields: ["featuredPost"], # GSI的分区键(主键) sortKeyFields: ["title"] # GSI的排序键 ) { id: ID! sk: String! featuredPost: String! # 建议字段设为非空,避免数据无法被索引到GSI中 title: String! # 其他业务字段... }
@model的keys参数保留了你原有的主键(id)和复合排序键(id+sk)配置;@index是AppSync专门用于定义GSI的指令:fields指定GSI的分区键,sortKeyFields指定排序键,name可自定义(推荐设置,避免自动生成的名称难以识别)。
2. 是否需要在Schema中引用GSI
不需要手动额外引用。当你通过@index定义GSI后,AppSync会自动在Schema的Query类型中生成对应的查询操作(比如根据featuredPost和title查询的listPostsByFeaturedPostByTitle,名称由GSI名称推导而来),你可以直接使用这些自动生成的查询来访问GSI中的数据。
内容的提问来源于stack exchange,提问作者DevOverflow
相关产品推荐
相关产品推荐

