全部產品
Search
文件中心

Tablestore:通過命令列工具使用多元索引

更新時間:Jul 10, 2024

如果實際業務中要用到非主鍵列查詢、多條件組合查詢等多種查詢功能,您可以通過控制台為資料表建立多元索引,然後使用多元索引查詢資料。

前提條件

  • 已下載命令列工具。具體操作,請參見下載命令列工具

  • 已啟動並配置執行個體。具體操作,請參見啟動並配置

  • 已擷取阿里雲帳號或RAM使用者的AccessKey。具體操作,請參見擷取AccessKey

  • 已建立資料表並使用資料表。具體操作,請參見建立並使用資料表

    其中資料表的最大版本數(max Versions)必須為1,資料生命週期(Time to Live)必須滿足如下條件中的任意一個。

    • 資料表的資料生命週期為-1(資料永不到期)。

    • 資料表的資料生命週期不為-1時,資料表為禁止更新狀態(即是否允許更新)。

注意事項

  • 建立多元索引時,多元索引中欄位的資料類型必須與資料表中欄位的資料類型相匹配。更多資訊,請參見資料類型映射

  • 如果要修改為指定資料生命週期(即取值不為-1),則您必須禁用資料表的UpdateRow更新寫入功能。同時多元索引的TTL值必須小於或等於資料表的TTL值。更多資訊,請參見生命週期管理

步驟一:建立多元索引

執行create_search_index命令建立一個多元索引。

  1. 執行create_search_index命令建立一個多元索引search_index。

    create_search_index -n search_index
  2. 根據系統提示輸入索引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命令使用多元索引查詢和分析資料。支援使用命令列工具操作的多元索引查詢類型包括精確查詢多詞精確查詢全匹配查詢匹配查詢短語匹配查詢首碼查詢範圍查詢萬用字元查詢模糊查詢多條件組合查詢地理位置查詢巢狀型別查詢列存在性查詢,您可以選擇合適的查詢類型進行多維度資料查詢。此處以精確查詢為例介紹。

  1. 執行search命令使用search_index多元索引查詢資料,並返回所有建立索引的列。

    search -n search_index --return_all_indexed
  2. 根據系統提示輸入查詢條件。

    以下樣本用於查詢當前表中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

  • 如果要在不修改資料表的儲存結構和資料的情況下,對新欄位新資料類型的查詢,您可以使用虛擬列功能實現。具體操作,請參見虛擬列