背景:
多元索引(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,导致索引无法同步。
3、创建索引
初始状态,用户的索引列表为空,用户点击【创建索引】后天厨创建窗口。单个表可创建多索引,根据自身需要设计索引,邀测阶段每个实例最多创建20个索引。例如:
创建索引时的设置说明:
- 索引字段类型支持:
索引字段类型 | 类型英文 | 主表字段类型 | 示例 | 支持情况 |
---|---|---|---|---|
字符串 | KEYWORD | STRING | "consumer_id" | SDK、控制台支持 |
分词字符串 | TEXT | STRING | "It's a delicious apple!"" | SDK、控制台支持 |
长整型 | LONG | INTEGER | 10000 | SDK、控制台支持 |
浮点数 | DOUBLE | DOUBLE | 11.11 | SDK、控制台支持 |
布尔值 | BOOLEAN | BOOLEAN | true | SDK、控制台支持 |
嵌套文档 | NESTED | STRING | "{'key':'value'}" | SDK支持 |
地理位置 | GEO_POINT | STRING | "30.132308,120.080190" | SDK支持 |
- 索引字段设置:
设置 | 功能 | 限制 |
---|---|---|
是否索引 | 开启后会对TableStore中同名列创建索引。(未设置的列无法查询) | |
允许排序 | 开启后TableStore中同名列可以支持排序。(未设置的了排序会报错) | TEXT禁止设置 |
附加存储 | 额外在索引中附带一份同名列的值,返回该列原始值的时候性能更好。 | TEXT不推荐设置 |
4、索引列表
索引创建后,在索引管理页面可看到表下所有索引列表,如下图:
- 索引字段:显示索引字段信息;
- 数据查询:使用该索引搜索数据;
- 删除:删除该索引;
索引字段说明:
点击【索引字段】后,查看该索引的字段信息如下图,通过SDK创建的含有NESTED、GEO_POINT的字段信息也会展示,控制台暂不支持两种类型字段创建与查询。
5、插入数据
数据查询前,别忘记主表数据是空的,记着插入数据。如下为数据的示例用户试用可仅插入几个字段
表名:"orderTable"
列名 | 类型 | 索引类型 | 索引字段 | 示例 |
---|---|---|---|---|
order_id(主键列) | String | KEYWORD | 均匀散列的字符串 | order_id_103 |
times_tamp | long | LONG | 交易时间戳 | 1531461600000 |
consumer_id | String | KEYWORD | 消费者 | consumer_5 |
seller_id | String | KEYWORD | 商家unique编号 | seller_1 |
product_id | String | KEYWORD | 产品unique编号 | product_3 |
product_name | String | KEYWORD | 产品名 | big red apple |
product_type | String | KEYWORD | 产品类型 | food |
product_price | double | DOUBLE | 产品单价 | 5.60 |
product_count | double | | 3 | |
total_pay | double | 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。