Issue
This Content is from Stack Overflow. Question asked by Xiao Wang
E.g:
myTable:
id field1
1 guy
id as the primary key and field1 as the global secondary index:
- AttributeName: id
KeyType: HASH
GlobalSecondaryIndexes:
- IndexName: Field1Index
KeySchema:
- AttributeName: field1
KeyType: HASH
when i use
dynamodb.scan()
or
dynamodb.get({TableName: 'myTable', Key: {id: 1}})
can find this record,
But when I use
ExpressionAttributeNames: {
'#field1': 'field1'
},
ExpressionAttributeValues: {
":field1": field1
},
KeyConditionExpression: "#field1 = :field1",
IndexName: "Field1Index",})
At the time, early data can be found, but recent data cannot be found.
I don’t know if it has something to do with myTable’s data volume exceeding 8000, but I still have to say it in advance, and I have to add that the data of this table is always written into the data table through batch upload.
At present, what I suspect is that this data does not seem to be registered in the secondary index. There are 8,357 items in the data table and 7,599 items in the secondary index. Therefore, it can be determined that the missing items in the secondary index cannot be queried. data.
At the same time, I also tried to delete the problem data first, and then try to add it again
Problem still can’t be solved
Can anyone know what is the reason?
Solution
It looks like this, but there may be various warnings due to java version issues
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.ViolationDetection.html
This Question was asked in StackOverflow by Xiao Wang and Answered by Xiao Wang It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.