前提条件
已初始化 OTSClient。具体操作,请参见初始化Tablestore Client。
-
已创建数据表,且数据表的最大版本数(
maxVersions)必须为 1,数据生命周期(timeToLive)须满足以下任一条件:timeToLive为-1,即数据永不过期。timeToLive不为-1,且数据表处于禁止更新状态。
数据表已设置预定义列。
注意事项
.NET SDK目前仅支持全局二级索引。如需创建本地二级索引,请使用其他语言 SDK、管理控制台或命令行工具。
索引表名称不能与已有的时序表或数据表名称相同。
创建二级索引时,系统自动将数据表主键中未出现在索引列的主键列补齐到索引表主键中。
参数
|
参数 |
说明 |
|
mainTableName |
数据表名称。 |
|
indexMeta |
索引表的结构信息,包含以下字段:
|
示例
以下示例在主键为 pk1 和 pk2 的数据表上创建全局二级索引。索引列为 col1,属性列为 col2,不包含存量数据。创建完成后,索引表的完整主键为 col1、pk1、pk2,属性列为 col2。
public static void CreateGlobalIndex(OTSClient otsClient, String TableName, String IndexName)
{
Console.WriteLine("Start create globalIndex...");
IndexMeta indexMeta = new IndexMeta(IndexName);
// 为索引表添加主键列。
indexMeta.PrimaryKey = new List<string>() { "col1" };
// 为索引表添加属性列。
indexMeta.DefinedColumns = new List<string>() { "col2" };
//indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX;
//indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX;
CapacityUnit reservedThroughput = new CapacityUnit(0, 0);
CreateGlobalIndexRequest request = new CreateGlobalIndexRequest(TableName, indexMeta);
otsClient.CreateGlobalIndex(request);
Console.WriteLine("Global Index is created,tableName: " + TableName + ",IndexName:" + IndexName);
}
相关文档
创建二级索引后,可通过单行读取或范围读取方式查询数据。具体操作,请参见使用二级索引读取数据。
不再需要某个二级索引时,可将其删除。具体操作,请参见删除二级索引。