2017-07-08 69 views
1

我有2個LSI在我的表與主排序關鍵字與多個本地二級索引Dynamodb查詢

ORG-ID的主分區鍵 - 主分區鍵

ClientID-主排序關鍵字

性別 - LSI

科 - LSI

我有查表一個LSI沒有的問題,而是如何提2 LSI在表模式。

var params = { 
TableName:"MyTable", 
IndexNames: ['ClientID-Gender-index','ClientID-Section-index'], 

KeyConditionExpression : '#Key1 = :Value1 and #Key2=:Value2 and #Key3=:Value3', 

ExpressionAttributeNames:{ 
"#Key1":"Org-ID", 
"#Key2":"Gender", 
"#Key3":"Section" 
}, 

ExpressionAttributeValues : { 
':Value1' :"Microsoft", 
':Value2':"Male", 
':Value3':"Cloud Computing" 
}}; 

誰能解決這個問題INDEXNAME(3號線)或KeyConditionExpression(4號線),我不知道這件事。

問題

條件可以是長度爲1或2的僅

回答

3

只能查詢一次一個單一DynamoDB索引。您不能在同一個查詢中使用多個索引。

一個簡單的選擇是使用單個索引並應用查詢過濾器,但這可能需要掃描大量記錄,並且過濾器僅減少通過網絡傳輸的數據量。

更高級的選擇是製作複合鍵。您最有可能想要使用GSI,而不是此用例的LSI。通過創建Key1,Key2和Key3字符串連接的單個新列,可以使用此GSI同時搜索所有三個密鑰。這將通過重複數據使每個單獨的記錄更大,但它允許更復雜的查詢模式。

相關問題