当前位置: 首页 > 知识库问答 >
问题:

如何在Dynamodb中使用全局二级索引检索一个项目?

鲜于德业
2023-03-14

我在Dynamodb中有一个表,我试图通过命名全局二级索引来获取一个项目(使用docClient.get),但我得到了错误:

The provided key element does not match the schema

我的问题是:

docClient
    .get({
      TableName: 'table',,
      IndexName: 'gsi_table',
      Key: { primary_key }
    })

但后来我查看了get文档,它没有IndexName属性。所以我想也许我应该命名GSI而不是表名:

docClient
    .get({
      TableName: 'gsi_table',
      Key: { primary_key }
    })

但后来我面对:

Requested resource not found

这意味着gsi_table不被识别为全局表。所以我的问题是,拥有操作列表:

  • 批量获取
  • 批量写入
  • createSet
  • 删除
  • 得到
  • 查询
  • 扫描
  • 更新

哪些支持GSI和LSI?此外,如果您想使用GSI检索一个特定的项目,您应该使用哪种操作?如果我使用查询,我实际上是在尽可能快/便宜地做事吗?

共有1个答案

何向荣
2023-03-14

次要索引仅用于QueryScan操作。因此,如果您必须使用全局(或本地)次要索引,那么Query当然会比Scan更快。

要访问“单个”项目,可以使用数据。项目[0]。例如:

const params = {
    TableName: "TABLE_NAME",
    IndexName: "INDEX_NAME",
    KeyConditionExpression: "INDEX_KEY = :k",
    ExpressionAttributeValues: {
        ":k": some_value
    }
};

docClient.query(params, (err, data) => {
    if (err) {
        console.log(err);
    } else {
        const myItem = data.Items[0];
    }
});
 类似资料:
  • 我有以下带有三个全局二级索引(GSI)的DyamoDB表 Id(主键)、user_id(GSI)、event_type(GSI)、product_id(GSI)、rate、create_date 我有以下三种查询模式: null null

  • 我是AWS DynamoDB和nosql的新手,我对表创建有问题。 我试图创建一个名为的表,具有以下属性: 用户ID(HASH) OSType(范围) MSISDN IMSI 设备ID 我不仅需要通过查询表,还需要通过以下字段查询表: MSISDN 我的逻辑如下: 通过字段查询表 在阅读了有关LSI/GSI的手册后,我很难理解如何创建表和定义这些索引。 这是我尝试使用PHP AWS SDK创建表的

  • 我仍然对本地二级索引的使用感到困惑。当需要LSI与GSI时,请给我具体的用例。 例如,“GenreAlbumTitle”索引应该是GSI还是LSI?https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.Prim

  • 我正在DynamoDB中创建一个表和GSI,使用以下参数,如文档所示: 是表的主键,我使用作为GSI的主键。(为了简洁起见,我删除了一些不必要的配置参数) 我正在使用以下命令查询此表: 但我一直在犯错误: "一个或多个参数值无效:条件参数类型与模式类型不匹配" 在文档中,它指定主可以是或,并且您可以在字段中设置。我正在以的形式发送,不确定这里缺少了什么。 问题是在我创建表的方式上,还是在我查询表的

  • AWS CLI for Dynamodb创建表在创建全局二级索引时有点混乱。在CLI文档中,它表示全局二级索引可以用以下表达式(简写)表示: 我的解释是,我应该这样做 请注意,我在这里不包括KeySchema来推断复杂性。控制台显示以下错误: 因此AWS CLI无法识别ProvisionedThroughput的映射表达式。我尝试了几种表达方式,但都没能成功。我也没有在谷歌上找到任何描述如何做的网

  • 本文(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-gsi-sharding.html)讨论一种通过引入一个随机整数作为分区键,在多个分区之间对全局二级索引值进行分片的技术。 这对我来说是有意义的,但本文没有清楚地解释如何查询该索引。假设我使用一个1-10的随机整数作为分区键,一个数字作为排序