このトピックでは、Go SDK を使用して Lastpoint インデックスデータをクエリする方法について説明します。
考慮事項
Tablestore Go SDK は、v1.7.15 以降で Lastpoint インデックス機能をサポートしています。この機能を使用するには、SDK を v1.7.15 以降にアップグレードする必要があります。
前提条件
時系列テーブルに Lastpoint インデックスを作成済みであること。詳細については、「Lastpoint インデックスの作成」をご参照ください。
サンプルコード
次のサンプルコードは、GetRange 操作を呼び出して、Lastpoint インデックスからすべてのデータを読み取ります。
func GetRange(client *tablestore.TableStoreClient, lastpointName string) {
getRangeRequest := &tablestore.GetRangeRequest{}
rangeRowQueryCriteria := &tablestore.RangeRowQueryCriteria{}
rangeRowQueryCriteria.TableName = lastpointName
startPK := new(tablestore.PrimaryKey)
startPK.AddPrimaryKeyColumnWithMinValue("_#h")
startPK.AddPrimaryKeyColumnWithMinValue("_m_name")
startPK.AddPrimaryKeyColumnWithMinValue("_data_source")
startPK.AddPrimaryKeyColumnWithMinValue("_tags")
endPK := new(tablestore.PrimaryKey)
endPK.AddPrimaryKeyColumnWithMaxValue("_#h")
endPK.AddPrimaryKeyColumnWithMaxValue("_m_name")
endPK.AddPrimaryKeyColumnWithMaxValue("_data_source")
endPK.AddPrimaryKeyColumnWithMaxValue("_tags")
rangeRowQueryCriteria.StartPrimaryKey = startPK
rangeRowQueryCriteria.EndPrimaryKey = endPK
rangeRowQueryCriteria.Direction = tablestore.FORWARD
// 最大バージョン数を 1 に設定します。時系列テーブルはマルチバージョン機能をサポートしていません。
rangeRowQueryCriteria.MaxVersion = 1
getRangeRequest.RangeRowQueryCriteria = rangeRowQueryCriteria
getRangeResp, err := client.GetRange(getRangeRequest)
fmt.Println("get range result is ", getRangeResp)
for {
if err != nil {
fmt.Println("get range failed with error:", err)
}
for _, row := range getRangeResp.Rows {
fmt.Println("range get row with key", row.PrimaryKey.PrimaryKeys[0].Value, row.PrimaryKey.PrimaryKeys[1].Value, row.PrimaryKey.PrimaryKeys[2].Value)
}
if getRangeResp.NextStartPrimaryKey == nil {
break
} else {
fmt.Println("next pk is :", getRangeResp.NextStartPrimaryKey.PrimaryKeys[0].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[1].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[2].Value)
getRangeRequest.RangeRowQueryCriteria.StartPrimaryKey = getRangeResp.NextStartPrimaryKey
getRangeResp, err = client.GetRange(getRangeRequest)
}
fmt.Println("continue to query rows")
}
fmt.Println("range get row finished")
}参照資料
Go SDK を使用してデータを読み取る方法の詳細については、「データの読み取り」をご参照ください。
複数条件の組み合わせクエリ、フルテキストインデックス、プレフィックスクエリ、あいまい検索など、より柔軟で豊富なデータアクセラレーションクエリメソッドが必要な場合は、Lastpoint インデックスの検索インデックス機能を使用できます。詳細については、「Lastpoint インデックスの取得」をご参照ください。