建立資料表後,您可以通過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