Запрос вторичного индекса на DynamoDB в Голанге - PullRequest
1 голос
/ 12 июня 2019

Мой первичный ключ - это поле с именем "id"

Я добавил вторичный индекс в свою таблицу в поле "group_number"

enter image description here

Я запрашиваю через вторичный индекс следующим образом:

// Query the secondary index
queryInput := &dynamodb.QueryInput{
    TableName: aws.String(c.GetDynamoDBTableName()),
    KeyConditions: map[string]*dynamodb.Condition{
        "group_number": {
            ComparisonOperator: aws.String("EQ"),
            AttributeValueList: []*dynamodb.AttributeValue{
                {
                    S: aws.String(c.GroupNumber),
                },
            },
        },
    },
}

Однако;Я получаю сообщение об ошибке «validationexception: условие запроса пропущено: элемент схемы ключа: id»

Разрешает ли DynamoDB запрашивать только первичные ключи?У меня сложилось впечатление, что вы используете «GetItem» для первичного ключа, потому что только одна запись может вернуться, если вы используете первичный ключ.Для поиска по вторичным индексам вы используете «Запрос», а для поиска по неиндексным ключам - «Сканирование».

Пожалуйста, дайте мне знать, что я здесь делаю неправильно.

1 Ответ

1 голос
/ 13 июня 2019

В дополнение к TableName необходимо также указать свойство IndexName при создании QueryInput для запроса индекса.

https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/#QueryInput

// The name of an index to query. This index can be any local secondary index
// or global secondary index on the table. Note that if you use the IndexName
// parameter, you must also provide TableName.
IndexName *string `min:"3" type:"string"`
...