创建多元索引后,您可以使用UpdateSearchIndex接口更新多元索引配置。本文介绍如何通过Go SDK更新多元索引的数据生命周期。
前提条件
已初始化Client。具体操作,请参见初始化OTSClient。
数据表上存在多元索引。
确保数据表为禁止更新状态(即
AllowUpdate
为false
)。具体操作,请参见更新表配置。
注意事项
多元索引的TTL和数据表的TTL是独立的,多元索引的TTL值必须小于或等于数据表的TTL值。当需要同时调小多元索引TTL和数据表TTL时,请先调整多元索引TTL,再调整数据表TTL。
多元索引每天会自动清理已过期的数据,过期数据的清理粒度为“天”,因此您仍然可以查询到某一时刻已过期但尚未及时清理的数据,多元索引会在下一次清理过期数据时自动清理这些过期数据。
数据表和多元索引的TTL更新后,系统会在下一次清理过期数据时自动清理数据表和多元索引中的过期存量数据。
参数
参数 | 说明 |
TableName(必选) | 数据表名称。 |
IndexName(必选) | 多元索引名称。 |
TimeToLive(必选) | 多元索引生命周期。 多元索引的TTL取值范围为-1或者int32的正整数(单位为秒),其中-1表示永久存储,int32最大值换算为年大约为68年。 |
示例
以下示例用于更新多元索引的数据生命周期为7天。
func updateIndexWithTTL(client *tablestore.TableStoreClient) {
request := &tablestore.UpdateSearchIndexRequest{}
request.TableName = "<TABLE_NMAE>"
request.IndexName = "<SAERCH_INDEX_NAME>"
request.TimeToLive = proto.Int32(3600 * 24 * 7) // 设置多元索引TTL为7天过期。
resp, err := client.UpdateSearchIndex(request)
if err != nil {
fmt.Println("error :", err)
return
}
fmt.Println("updateIndexWithTTL finished, requestId:", resp.ResponseInfo.RequestId)
}
常见问题
修改数据表生命周期时报错[table ttl] must be bigger than or equal search index ttl
相关文档
如果您想了解更多关于多元索引生命周期的信息,请参见多元索引生命周期管理。
如果要查询某个多元索引的详细信息,例如多元索引的字段信息、索引结构等,您可以参考操作查询多元索引描述信息。
如需在多元索引中新增、更新或者删除索引列,以及修改多元索引的路由键和预排序方式,您可以使用动态修改schema功能实现。具体操作,请参见动态修改schema。