通過命令列工具建立和管理多元索引,實現非主鍵列查詢、多條件組合查詢等多維度資料查詢。
前提條件
建立多元索引
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