全部產品
Search
文件中心

Tablestore:二級索引

更新時間:Jun 05, 2026

通過命令列工具建立和管理二級索引,實現按屬性列快速查詢資料。

前提條件

  • 已完成命令列工具的安裝和訪問憑證配置。具體操作,請參見命令列工具

  • 已建立資料表和預定義列,且資料表的最大版本數(max versions)必須為1。具體操作,請參見資料表操作

建立二級索引

為資料表建立全域或本地二級索引

create_index -t <tableName> -n <indexName> -i <indexType> --pk <primaryKeyName> --attr <definedColumn>

參數

必填

說明

-t,--table

資料表名稱。已通過use選定資料表時可省略。

-n,--name

二級索引名稱。

-i,--index_type

二級索引類型。取值:

  • global(預設):全域二級索引。以非同步方式將資料表中被索引的列和主鍵列的資料自動同步到索引表中,正常情況下同步延遲為毫秒層級。

  • local:本地二級索引。以同步方式將資料寫入索引表中,當資料寫入資料表後即可從索引表中查詢到資料。

-k,--pk

索引表的索引列,為資料表主鍵和預定義列的組合,多列以逗號分隔。使用本地二級索引時,索引表的第一個主鍵列必須與資料表的第一個主鍵列相同。

-a,--attr

索引表的屬性列,為資料表的預定義列的組合,多列以逗號分隔。

-b,--without_base_data

構建二級索引時不包括資料表中的存量資料。預設包含存量資料。

樣本

  • 為資料表 mytable 建立全域二級索引 index0(包含存量資料)。

    create_index -t mytable -n index0 -i global --pk uid,pid -a name,col0
  • 為資料表 mytable 建立全域二級索引 index1(不包含存量資料)。

    create_index -t mytable -n index1 -i global --pk uid,pid -a name,col0 -b
  • 為資料表 mytable 建立本地二級索引 index2。

    create_index -t mytable -n index2 -i local --pk uid,name -a col0,col1

使用索引表

選定索引表,後續的查詢和匯出操作在該表上執行。

use --wc -t <indexName>

參數

必填

說明

--wc

表示操作的表為資料表或索引表。

-t,--table

索引表名稱。

樣本

使用索引表 index0。

use -t index0

查看索引資訊

通過desc命令查看資料表及其二級索引資訊。

desc -t <tableName>

參數

必填

說明

-t,--table

資料表或索引表名稱。已通過use選定表時可省略。

-f,--print_format

輸出格式。取值為 json(預設)或 table。

-o,--output

輸出表資訊到本地 JSON 檔案。

樣本

  • 查看當前表的資訊。

    desc
  • 將表資訊儲存到本地檔案。

    desc -o /tmp/describe_table_meta.json

讀取資料

根據主鍵讀取索引表中一行資料。

說明

如果讀取的資料行不存在,則返回結果為空白。

get --pk '<pk_values>'

參數

必填

說明

-k,--pk

索引表主鍵的值,以 JSON 數組表示。設定的主鍵個數和類型必須和索引表的主鍵個數和類型一致。

-c,--columns

讀取的列集合,列名可以是主鍵列或屬性列,多列以逗號分隔。不設定則返回整行資料。

--max_version

最多讀取的版本數。

--time_range_start

讀取版本號碼範圍內的資料。time_range_start 和 time_range_end 分別表示起始時間戳記和結束時間戳記,範圍為左閉右開區間。

--time_range_end

--time_range_specific

讀取特定版本號碼的資料。

-o,--output

輸出查詢結果到本地 JSON 檔案。

樣本

讀取索引表中主索引值為 "86" 和 6771 的行資料。

get --pk '["86", 6771]'

掃描資料

掃描擷取索引表中所有資料或指定行數的資料。

scan --limit <n>

參數

必填

說明

--limit

本次掃描返回的最大行數。不設定則掃描整表所有資料。

樣本

掃描擷取索引表中最多 10 行資料。

scan --limit 10

匯出資料

匯出索引表中的資料到本地 JSON 檔案。

scan -o /localpath/filename.json

參數

必填

說明

-c,--columns

匯出的列集合,列名可以是主鍵列或屬性列,多列以逗號分隔。不設定則匯出整行資料。

--max_version

最多匯出的版本數。

--time_range_start

匯出版本號碼範圍內的資料。time_range_start 和 time_range_end 分別表示起始時間戳記和結束時間戳記,範圍為左閉右開區間。

--time_range_end

--time_range_specific

匯出特定版本號碼的資料。

--backward

匯出資料按照主鍵降序排列。

-o,--output

匯出資料到指定的本地檔案路徑。

-l,--limit

本次匯出最多返回的行數。

-b,--begin

匯出範圍的起始點和結束點,主鍵範圍為左閉右開區間。

說明
  • --begin 值為 [null,null] 時,表示起始點為 [INF_MIN,INF_MIN],即各主鍵列從最小值開始。

  • --end 值為 [null,null] 時,表示結束點為 [INF_MAX,INF_MAX],即各主鍵列到最大值結束。

-e,--end

樣本

  • 匯出索引表中全部資料到本地檔案。

    scan -o /tmp/mydata.json
  • 匯出 uid 和 name 列的資料。

    scan -o /tmp/mydata.json -c uid,name
  • 匯出指定主鍵範圍內的資料。

    scan -o /tmp/mydata.json -b '["86", 6771]' -e '["86", 6775]'

刪除二級索引

刪除不需要的索引表。

drop_index -t <tableName> -i <indexName> -y

參數

必填

說明

-t,--table

資料表名稱。已通過use選定資料表時可省略。

-i,--index

二級索引名稱。

-y,--yes

確認刪除。命令中必須帶有此參數。

樣本

  • 刪除當前資料表的索引表 index0。

    drop_index -i index0 -y
  • 刪除資料表 mytable 的索引表 index0。

    drop_index -t mytable -i index0 -y