如果實際業務中要用到非主鍵列查詢、多條件組合查詢等多種查詢功能,您可以通過控制台為資料表建立多元索引,然後使用多元索引查詢資料。
前提條件
已下載命令列工具。具體操作,請參見下載命令列工具。
已啟動並配置執行個體。具體操作,請參見啟動並配置。
已擷取阿里雲帳號或RAM使用者的AccessKey。具體操作,請參見擷取AccessKey。
已建立資料表並使用資料表。具體操作,請參見建立並使用資料表。
其中資料表的最大版本數(max Versions)必須為1,資料生命週期(Time to Live)必須滿足如下條件中的任意一個。
資料表的資料生命週期為-1(資料永不到期)。
資料表的資料生命週期不為-1時,資料表為禁止更新狀態(即是否允許更新為否)。
注意事項
步驟一:建立多元索引
執行create_search_index
命令建立一個多元索引。
執行
create_search_index
命令建立一個多元索引search_index。create_search_index -n search_index
根據系統提示輸入索引Schema,樣本如下:
索引Schema包括IndexSetting(索引設定)、FieldSchemas(Index的所有欄位的設定)和IndexSort(索引預排序設定)。關於索引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" ] } ] }
步驟二:使用多元索引查詢和分析資料
執行search
命令使用多元索引查詢和分析資料。支援使用命令列工具操作的多元索引查詢類型包括精確查詢、多詞精確查詢、全匹配查詢、匹配查詢、短語匹配查詢、首碼查詢、範圍查詢、萬用字元查詢、模糊查詢、多條件組合查詢、地理位置查詢、巢狀型別查詢和列存在性查詢,您可以選擇合適的查詢類型進行多維度資料查詢。此處以精確查詢為例介紹。
執行search命令使用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" } }] }
常見問題
相關文檔
您還可以通過控制台和SDK使用多元索引。具體操作,請參見通過控制台使用多元索引和通過SDK使用多元索引。
如果要對結果集進行排序或者翻頁,您可以使用排序和翻頁功能來實現。具體操作,請參見排序和翻頁。
如果要按照某一列對結果集做摺疊,使對應類型的資料在結果展示中只出現一次,您可以使用摺疊(去重)功能來實現。具體操作,請參見摺疊(去重)。
如果要進行資料分析,例如求最值、求和、統計行數等,您可以使用Search介面的統計彙總功能或者SQL查詢來實現。具體操作,請參見統計彙總和SQL查詢。
如果要讓系統能自動清理多元索引中超過儲存時間的資料,您可以使用多元索引生命週期功能。具體操作,請參見生命週期管理。
如果要在多元索引中進行索引列增刪改、預排序修改等操作,您可以使用動態修改schema功能實現。具體操作,請參見動態修改schema。
如果要在不修改資料表的儲存結構和資料的情況下,對新欄位新資料類型的查詢,您可以使用虛擬列功能實現。具體操作,請參見虛擬列。