在数据表上创建索引表后,可根据需要读取索引表中的数据或者删除数据表上指定的索引表。
前提条件
已初始化Client。具体操作,请参见初始化Client。
已创建数据表,且数据表的最大版本数(maxVersions)必须为1,数据生命周期(timeToLive)必须满足如下条件中的任意一个。
数据表的数据生命周期为-1(数据永不过期)。
数据表的数据生命周期不为-1时,数据表为禁止更新状态。
数据表已设置预定义列。
注意事项
索引表名称不能与已存在的时序表名称和数据表名称相同。
创建二级索引时,系统会自动将未出现在索引列中的数据表主键补齐到索引表主键中。
创建本地二级索引时,索引表的第一列主键必须与数据表的第一列主键相同。
参数
参数 | 说明 |
mainTableName | 数据表名称。 |
indexMeta | 索引表的结构信息,包括如下内容:
|
示例
创建全局二级索引
以下示例用于在主键为pk1、pk2的数据表上创建主键列为col1,属性列为col2的索引表。该索引为全局二级索引且不包含存量数据。该索引表的完整主键为col1、pk1、pk2,属性列为col2。
var client = require('./client');
var TableStore = require('./index.js');
client.createIndex({
mainTableName: "<TABLE_NAME>", //设置数据表名称。
indexMeta: {
name: "<INDEX_NAME>", //设置索引表名称。
primaryKey: ["col1"], //为索引表添加主键列。
definedColumn: ["col2"], //为索引表添加属性列。
includeBaseData: false, //不包含存量数据。如果需要包含存量数据,请设置此参数为true。
indexUpdateMode: TableStore.IndexUpdateMode.IUM_ASYNC_INDEX,//索引更新模式默认为异步更新(IUM_ASYNC_INDEX)。
indexType: TableStore.IndexType.IT_GLOBAL_INDEX,//索引类型默认为全局二级索引(IT_GLOBAL_INDEX)。
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
创建本地二级索引
以下示例用于在主键为pk1、pk2的数据表上创建主键列为pk1、col1,属性列为col2的索引表。该索引为本地二级索引且不包括存量数据。该索引表的完整主键为pk1、col1、pk2,属性列为col2。
var client = require('./client');
var TableStore = require('./index.js');
client.createIndex({
mainTableName: "<TABLE_NAME>", //设置数据表名称。
indexMeta: {
name: "<INDEX_TABLE>", //设置索引表名称。
primaryKey: ["pk1","col1"], //为索引表添加主键列。索引表的第一列主键必须与数据表的第一列主键相同。
definedColumn: ["col2"], //为索引表添加属性列。
includeBaseData: false, //不包含存量数据。如果需要包含存量数据,请设置此参数为true。
indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX,//设置索引更新模式为同步更新(IUM_SYNC_INDEX)。当索引类型为本地二级索引时,索引更新模式必须为同步更新。
indexType: TableStore.IndexType.IT_LOCAL_INDEX,//设置索引类型为本地二级索引(IT_LOCAL_INDEX)。
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
相关文档
创建二级索引后,您可以单行读取或者范围读取数据。具体操作,请参见使用二级索引读取数据。
如果不再需要使用二级索引,您可以删除二级索引。具体操作,请参见删除二级索引。