背景:
多元索引(SearchIndex)是TableStore 2018年重點打造的核心能力,目的是為線上資料平台(TableStore)提供豐富的查詢能力, 目前提供了多種索引能力,包括反向索引、多元空間索引等。在功能上,支援多字段ad-hoc查詢、模糊查詢、範圍查詢 、全文檢索、嵌套查詢、排序等查詢功能。索引支援全量、增量同步,新表、舊表均能使用SearchIndex功能。詳細功能見
https://yq.aliyun.com/articles/641629我們首先會在北京、上海區域開放SearchIndex功能的邀測,在邀測階段,SearchIndex部分的費用免收, 有興趣參加邀測的使用者通過送出工單方式送出申請,或者加入釘釘群11789671進行咨詢。
使用介紹:
1、申請邀測(現已開放)
SearchIndex邀測階段,僅支援【北京、上海】兩個地區,使用者申請邀測需通過阿裡雲官網送出工單。
2、建立表
通過邀測申請的使用者,執行個體下所有表均支援SearchIndex功能,但是表必須滿足條件(ttl=-1,maxVersion=1)。支援SearchIndex功能的執行個體,建表時預設開啟SearchIndex功能。表格建好後,通過【索引管理】進入索引頁面。
注意:建立索引後,表的Stream功能會預設開啟,如果此時關閉Stream功能,将會影響SearchIndex,導緻索引無法同步。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL4ImZzUTOwQGO1YWOtUzN4IWLlBDO00COiJWNtATY4MGM4QWMtYDOyAzM3kTNzczM1EzLcdjN0cTOvw1ZuB3LchTMwIzLcBzLctmchx2Lc12bj5yayFGbu5ibkN2Lc9CX6MHc0RHaiojIsJye.png)
3、建立索引
初始狀态,使用者的索引清單為空,使用者點選【建立索引】後天廚建立視窗。單個表可建立多索引,根據自身需要設計索引,邀測階段每個執行個體最多建立20個索引。例如:
建立索引時的設定說明:
- 索引字段類型支援:
索引字段類型 | 類型英文 | 主表字段類型 | 示例 | 支援情況 |
---|---|---|---|---|
字元串 | KEYWORD | STRING | "consumer_id" | SDK、控制台支援 |
分詞字元串 | TEXT | "It's a delicious apple!"" | ||
長整型 | LONG | INTEGER | 10000 | |
浮點數 | DOUBLE | 11.11 | ||
布爾值 | BOOLEAN | true | ||
嵌套文檔 | NESTED | "{'key':'value'}" | SDK支援 | |
地理位置 | GEO_POINT | "30.132308,120.080190" |
- 索引字段設定:
設定 | 功能 | 限制 |
---|---|---|
是否索引 | 開啟後會對TableStore中同名列建立索引。(未設定的列無法查詢) | |
允許排序 | 開啟後TableStore中同名列可以支援排序。(未設定的了排序會報錯) | TEXT禁止設定 |
附加存儲 | 額外在索引中附帶一份同名列的值,傳回該列原始值的時候性能更好。 | TEXT不推薦設定 |
4、索引清單
索引建立後,在索引管理頁面可看到表下所有索引清單,如下圖:
- 索引字段:顯示索引字段資訊;
- 資料查詢:使用該索引搜尋資料;
- 删除:删除該索引;
索引字段說明:
點選【索引字段】後,檢視該索引的字段資訊如下圖,通過SDK建立的含有NESTED、GEO_POINT的字段資訊也會展示,控制台暫不支援兩種類型字段建立與查詢。
5、插入資料
資料查詢前,别忘記主表資料是空的,記着插入資料。如下為資料的示例使用者試用可僅插入幾個字段
表名:"orderTable"
列名 | 類型 | 索引類型 | 索引字段 | |
---|---|---|---|---|
order_id(主鍵列) | String | 均勻散列的字元串 | order_id_103 | |
times_tamp | long | 交易時間戳 | 1531461600000 | |
consumer_id | 消費者 | consumer_5 | ||
seller_id | 商家unique編号 | seller_1 | ||
product_id | 産品unique編号 | product_3 | ||
product_name | 産品名 | big red apple | ||
product_type | 産品類型 | food | ||
product_price | double | 産品單價 | 5.60 | |
product_count | | 3 | ||
total_pay | 16.80 | |||
...... |
6、資料查詢
點選【資料查詢】後,填寫查詢條件,
- 索引名選擇:可切換使用其他索引;
- 是否排序:設定傳回資料是否排序,彈出排序設定;
- 傳回那些列:設定傳回資料的列(主鍵部分全傳回),若設定為空僅傳回主鍵列資料;
- 全部列:FALSE時按設定傳回,TRUE時傳回主表中所有列(包含非索引字段列);
- 增加And條件:控制台僅支援條件的And組合(不支援NESTED、GEO_POINT字段);
- 增加排序:排序條件的配置,控制台不支援TEXT、NESTED、GEO_POINT字段;
條件類型說明
條件類型 | 英文 | 說明 |
精确查詢 | TermQuery | 精确比對KEYWORD,或比對TEXT中的分詞 |
範圍查詢 | RangeQuery | 條件左閉(>=)右開(<): [from, to) |
字首查詢 | PrefixQuery | 字首模糊比對KEYWORD,或比對TEXT中的分詞 |
通配符查詢 | WildcardQuery | consumer_*,比對consumer_1等資料 |
比對查詢 | MatchQuery | 對KEYWORD精确比對, 對TEXT,先做分詞後,再比對TEXT中的分詞 |
短語比對查詢 | MatchPhraseQuery | 對TEXT,先做分詞後,再比對TEXT中的分詞 |
查詢操作
示例按照如下條件進行資料查詢
設定項 | 設定值 | 詳細 |
是否排序 | 是 | time_stamp:逆序 |
查詢條件 | 兩個字段and | product_name比對查詢:apple product_price範圍查詢:>=5.60 |
傳回那些列 | 非全部 | seller_id,product_name,product_price,time_stamp |
根據以上條件可查詢出如下資料。其中,資料隻傳回了主鍵+定義的【傳回那些列】,同時按照【time_stamp】字段【倒序】排列傳回,查詢一共命中382條。
歡迎加入
對TableStore感興趣的使用者,歡迎加入【表格存儲公開交流群】,群号:11789671。