通过命令行工具创建和管理多元索引,实现非主键列查询、多条件组合查询等多维度数据查询。
前提条件
创建多元索引
create_search_index -n <indexName>
|
参数 |
必填 |
说明 |
|
-i,--input |
否 |
通过 JSON 格式的文件配置多元索引 Schema。不指定时通过交互式输入。 |
|
-n,--name |
是 |
多元索引名称。 |
|
-t,--table |
否 |
数据表名称。已通过 |
|
--ttl |
否 |
数据生命周期(TTL),即数据的保存时间。单位为秒。默认值为 -1(永不过期)。取值最低为 86400 秒(一天)。数据保存时间超过 TTL 后,系统自动清理过期数据。 重要
使用多元索引生命周期管理功能,必须禁用数据表的 UpdateRow 更新写入功能。多元索引的 TTL 和数据表的 TTL 是独立的,多元索引的 TTL 值必须小于或等于数据表的 TTL 值。 |
执行命令后根据系统提示输入索引 Schema(JSON 格式),或通过-i参数指定 Schema 文件。Schema 包含以下配置项:
|
参数 |
必填 |
说明 |
|
IndexSetting |
否 |
索引设置,包含 RoutingFields 设置。 RoutingFields(可选):自定义路由字段。可以选择部分主键列作为路由字段,索引数据读写时,路由字段值相同的数据会被分配到相同分区,从而提高查询效率。通常只需设置一个路由字段。如果设置多个路由字段,系统会将多个路由字段的值拼接成一个值。 |
|
FieldSchemas |
是 |
FieldSchema 的列表,每个 FieldSchema 包含如下内容:
|
|
IndexSort |
否 |
索引预排序设置,包含 Sorters 设置。如果不设置,则默认按照主键排序。 重要
含有 Nested 类型的索引不支持 IndexSort,没有预排序。 Sorters(可选):索引的预排序方式,包含 Name 和 Sorter 设置。支持按照主键排序和字段值排序。更多信息,请参见排序和翻页。
|
示例
创建 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": "col3",
"FieldType": "TEXT",
"Index": true,
"Analyzer": "single_word",
"AnalyzerParameter": {
"CaseSensitive": true,
"DelimitWord": null
},
"EnableSortAndAgg": false,
"Store": true,
"IsArray": false,
"IsVirtualField": false
}
],
"IndexSort": {
"Sorters": [
{
"Name": "PrimaryKeySort",
"Sorter": {
"Order": "ASC"
}
}
]
}
}
通过文件创建多元索引:
create_search_index -n search_index -i /tmp/indexschema.json
查看多元索引列表
list_search_index
|
参数 |
必填 |
说明 |
|
-a,--all |
否 |
显示所有表的多元索引列表。 |
|
-d,--detail |
否 |
显示多元索引的详细信息。 |
|
-t,--table |
否 |
数据表名称。已通过 |
示例
查看当前表下的多元索引列表。
list_search_index -d
查看多元索引信息
describe_search_index -n <indexName>
|
参数 |
必填 |
说明 |
|
-n,--name |
是 |
多元索引名称。 |
|
-o,--output |
否 |
输出查询结果到本地 JSON 格式文件或 TXT 格式文件中。 |
|
-t,--table |
否 |
数据表名称。已通过 |
示例
查看 search_index 多元索引的信息。
describe_search_index -n search_index
返回结果中的Index schema为多元索引的 Schema,TimeToLive 为多元索引的数据生命周期。
使用多元索引查询数据
支持使用命令行工具操作的多元索引查询类型包括精确查询、多词精确查询、全匹配查询、匹配查询、短语匹配查询、前缀查询、范围查询、通配符查询、基于分词的通配符查询、组合查询、地理位置查询和列存在性查询,根据业务需求选择合适的查询类型。
search -n <indexName> --return_all_indexed
|
参数 |
必填 |
说明 |
|
-c,--column |
否 |
要返回的列。多个列之间用半角逗号(,)分隔。 |
|
-n,--name |
是 |
多元索引名称。 |
|
-f,--print_format |
否 |
输出结果的打印格式,默认值为 table。 |
|
--return_all |
否 |
返回所有列。 |
|
--return_all_indexed |
否 |
返回所有多元索引中建立索引的列。 |
|
-t,--table |
否 |
数据表名称。已通过 |
执行命令后根据系统提示输入查询条件(JSON 格式),查询条件包含以下配置项:
|
参数 |
必填 |
说明 |
|
Offset |
否 |
本次查询的开始位置。 |
|
Limit |
否 |
本次查询需要返回的最大数量。如果只为了获取行数无需具体数据,可以设置 Limit 为 0。 |
|
Collapse |
否 |
折叠参数配置,可以按照某一列对结果集做折叠(去重)。FieldName 为列名,只支持整型、浮点数和 Keyword 类型的列。 |
|
Sort |
否 |
返回结果的排序方式。更多信息,请参见查询时指定排序方式。如果未设置排序方式,则按照预排序方式返回;如果未设置预排序,则按照主键排序返回。 |
|
GetTotalCount |
否 |
是否返回匹配的总行数,默认为 false。返回匹配的总行数会影响查询性能。 |
|
Token |
否 |
当符合查询条件的数据未读取完时,服务端会返回 Token 值,此时可以使用 Token 继续读取后面的数据。首次读取数据时,Token 值需要设置为 null。 |
|
Query |
是 |
查询类型。多元索引支持全匹配查询(MatchAllQuery)、匹配查询(MatchQuery)、短语匹配查询(MatchPhraseQuery)、精确查询(TermQuery)、多词精确查询(TermsQuery)、前缀查询(PrefixQuery)等查询方式,根据业务需求选择。 |
|
Aggregations |
否 |
统计聚合功能配置,可以实现求最小值、求最大值、求和、求平均值、统计行数、去重统计行数等功能。
|
示例
使用 search_index 多元索引查询表中的数据,并返回所有建立索引的列。
search -n search_index --return_all_indexed
根据系统提示输入查询条件。以下示例查询 uid 精确匹配 10001 的数据,并对 pid 列求平均值。
{
"Offset": -1,
"Limit": 10,
"Collapse": null,
"Sort": null,
"GetTotalCount": true,
"Token": null,
"Query": {
"Name": "TermQuery",
"Query": {
"FieldName": "uid",
"Term": 10001
}
},
"Aggregations": [{
"Name": "avg",
"Aggregation": {
"AggName": "agg1",
"Field": "pid"
}
}]
}
删除多元索引
drop_search_index -n <indexName> -y
|
参数 |
必填 |
说明 |
|
-n,--name |
是 |
多元索引名称。 |
|
-t,--table |
否 |
数据表名称。已通过 |
|
-y,--yes |
是 |
确认删除。命令中必须带有此参数。 |
示例
删除 search_index 多元索引。
drop_search_index -n search_index -y