创建数据表后,您可以通过Tablestore CLI创建多元索引、查看多元索引列表、查看多元索引信息、使用多元索引查询数据以及删除多元索引。
创建多元索引
创建一个多元索引。
命令格式
create_search_index -n search_index_name
配置项说明请参见下表。
配置项 | 是否必填 | 示例值 | 说明 |
-i,--input | 否 | /tmp/indexschema.json | 通过JSON格式的文件配置多元索引Schema。 |
-n,--name | 是 | search_index | 多元索引名称。 |
-t,--table | 否 | mytable | 数据表名称。 |
--ttl | 否 | -1 | 数据生命周期(TTL),即数据的保存时间。当数据的保存时间超过设置的数据生命周期时,系统会自动清理超过数据生命周期的数据。默认值为-1。 数据生命周期至少为86400秒(一天)或-1(数据永不过期)。 重要 使用多元索引生命周期管理功能,必须禁用数据表的UpdateRow更新写入功能。多元索引的TTL和数据表的TTL是独立的,多元索引的TTL值必须小于或等于数据表的TTL值。更多信息,请参见生命周期管理。 |
示例
创建search_index多元索引。
create_search_index -n search_index
根据系统提示输入索引Schema,示例如下:
{
"IndexSetting": {
"RoutingFields": null
},
"FieldSchemas": [
{
"FieldName": "gid",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "uid",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col2",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col3",
"FieldType": "TEXT",
"Index": true,
"Analyzer": "single_word",
"AnalyzerParameter": {
"CaseSensitive": true,
"DelimitWord": null
},
"EnableSortAndAgg": false,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col1",
"FieldType": "KEYWORD",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col3V",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": true,
"SourceFieldNames": [
"col3"
]
}
]
}
多元索引Schema配置项说明请参见下表。
配置项 | 是否必填 | 说明 |
IndexSetting | 否 | 索引设置,包含RoutingFields设置。 RoutingFields(可选):自定义路由字段。可以选择部分主键列作为路由字段,在进行索引数据写入时,会根据路由字段的值计算索引数据的分布位置,路由字段的值相同的记录会被索引到相同的数据分区中。 |
FieldSchemas | 是 | FieldSchema的列表,每个FieldSchema包含如下内容:
|
IndexSort | 否 | 索引预排序设置,包含Sorters设置。如果不设置,则默认按照主键排序。 重要 含有Nested类型的索引不支持IndexSort,没有预排序。 Sorters(可选):索引的预排序方式,包含Name和Sorter设置。支持按照主键排序和字段值排序。更多信息,请参见排序和翻页。
|
查看多元索引列表
查看当前数据表下多元索引的列表。
命令格式
list_search_index
配置项说明请参见下表。
配置项 | 是否必填 | 示例值 | 说明 |
-a,--all | 否 | 不涉及 | 显示所有表的多元索引列表。 |
-d,--detail | 否 | 不涉及 | 显示多元索引的详细信息。 |
-t,--table | 否 | mytable | 数据表名称。 |
示例
查看当前表下的多元索引列表。
list_search_index
返回结果如下:
+-----------+--------------+
| TableName | IndexName |
+-----------+--------------+
| mytable | search_index |
+-----------+--------------+
查看多元索引信息
查看多元索引的信息。
命令格式
describe_search_index -n search_index_name
配置项说明请参见下表。
配置项 | 是否必填 | 示例值 | 说明 |
-n,--name | 是 | search_index | 多元索引名称。 |
-o,--output | 否 | /tmp/describeinfo.json | 输出查询结果到本地JSON格式文件或TXT格式文件中。 |
-t,--table | 否 | mytable | 数据表名称。 |
示例
查看search_index多元索引的信息。
describe_search_index -n search_index
返回结果中的Index schema
为多元索引的Schema,TimeToLive为多元索引的数据生命周期。
使用多元索引查询数据
使用多元索引查询满足指定条件的数据,并对数据进行统计聚合操作。
命令格式
search -n search_index_name --return_all_indexed
配置项说明请参见下表。
配置项 | 是否必填 | 示例值 | 说明 |
-c,--column | 否 | col1,col2 | 要返回的列。多个列之间用半角逗号(,)分隔。 |
-n,--name | 是 | search_index | 多元索引名称。 |
-f,--print_format | 否 | table | 输出结果的打印格式,默认值为table。 |
--return_all | 否 | 不涉及 | 返回所有列。 |
--return_all_indexed | 否 | 不涉及 | 返回所有多元索引中建立索引的列。 |
-t,--table | 否 | mytable | 数据表名称。 |
示例
使用search_index多元索引查询表中数据,并返回所有建立索引的列。
search -n search_index --return_all_indexed
根据系统提示输入查询条件,示例如下:
{
"Offset": -1,
"Limit": 10,
"Collapse": null,
"Sort": null,
"GetTotalCount": true,
"Token": null,
"Query": {
"Name": "BoolQuery",
"Query": {
"MinimumShouldMatch": null,
"MustQueries": null,
"MustNotQueries": null,
"FilterQueries": null,
"ShouldQueries": [{
"Name": "RangeQuery",
"Query": {
"FieldName": "gid",
"From": null,
"To": 10,
"IncludeLower": false,
"IncludeUpper": false
}
}, {
"Name": "TermQuery",
"Query": {
"FieldName": "gid",
"Term": "77"
}
}]
}
},
"Aggregations": [{
"Name": "avg",
"Aggregation": {
"AggName": "agg1",
"Field": "gid",
"MissingValue": null
}
}]
}
配置项说明请参见下表。
参数 | 是否必填 | 说明 |
Offset | 否 | 本次查询的开始位置。 |
Limit | 否 | 本次查询需要返回的最大数量。 如果要随机获取几行数据,请设置limit为正整数。 如果只为了获取行数,无需具体数据,可以设置limit=0,即不返回任意一行数据。 |
Collapse | 否 | 折叠参数配置,可以按照某一列对结果集做折叠,使对应类型的数据在结果展示中只出现一次,保证结果展示中类型的多样性。更多信息,请参见折叠(去重)。 FieldName:列名,按该列对结果集做折叠,只支持应用于整型、浮点数和Keyword类型的列,不支持数组类型的列。 |
Sort | 否 | 返回结果的排序方式。更多信息,请参见查询时指定排序方式。 如果查询数据未设置排序方式,则查询结果会按照预排序方式返回;如果创建多元索引时未设置预排序,则查询结果会按照主键排序返回。 |
GetTotalCount | 否 | 是否返回匹配的总行数,默认为false,表示不返回。 返回匹配的总行数会影响查询性能。如果要返回匹配的总行数,请设置GetTotalCount为true。 |
Token | 否 | 当符合查询条件的数据未读取完时,服务端会返回Token值,此时可以使用Token继续读取后面的数据。首次读取数据时,Token值需要设置为null。 |
Query | 是 | 查询类型。多元索引支持全匹配查询(MatchAllQuery)、匹配查询(MatchQuery)、短语匹配查询(MatchPhraseQuery)、精确查询(TermQuery)、多词精确查询(TermsQuery)、前缀查询(PrefixQuery)等多种查询方式,请根据实际设置。更多信息,请参见使用SDK查询数据。 |
Aggregations | 否 | 统计聚合功能配置,可以实现求最小值、求最大值、求和、求平均值、统计行数、去重统计行数等功能。更多信息,请参见统计聚合。
|
删除多元索引
删除不需要的多元索引。
命令格式
drop_search_index -n search_index_name -y
配置项说明请参见下表。
配置项 | 是否必填 | 示例值 | 说明 |
-n,--name | 是 | search_index | 多元索引名称。 |
-t,--table | 否 | mytable | 数据表名称。 |
-y,--yes | 是 | 不涉及 | 显示确认信息。命令中必须带有此配置项。 |
示例
删除search_index多元索引。
drop_search_index -n search_index -y