如果實際業務中要用到非主鍵列查詢、多條件組合查詢等多種查詢功能,您可以通過控制臺為數據表創建多元索引,然后使用多元索引查詢數據。
前提條件
已下載命令行工具。具體操作,請參見下載命令行工具。
已啟動并配置實例。具體操作,請參見啟動并配置。
已獲取阿里云賬號或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。
如果要在不修改數據表的存儲結構和數據的情況下,對新字段新數據類型的查詢,您可以使用虛擬列功能實現。具體操作,請參見虛擬列。