本文共 2753 字,大约阅读时间需要 9 分钟。
多元索引(SearchIndex)是TableStore 2018年重点打造的核心能力,目的是为在线数据平台(TableStore)提供丰富的查询能力, 目前提供了多种索引能力,包括倒排索引、多维空间索引等。在功能上,支持多字段ad-hoc查询、模糊查询、范围查询 、全文检索、嵌套查询、排序等查询功能。索引支持全量、增量同步,新表、旧表均能使用SearchIndex功能。详细功能见
我们首先会在北京、上海区域开放SearchIndex功能的邀测,在邀测阶段,SearchIndex部分的费用免收, 有兴趣参加邀测的用户通过提交工单方式提交申请,或者加入钉钉群11789671进行咨询。
SearchIndex邀测阶段,仅支持【北京、上海】两个地区,用户申请邀测需通过阿里云官网提交工单。具体见截图
通过邀测申请的用户,实例下所有表均支持SearchIndex功能,但是表必须满足条件(ttl=-1,maxVersion=1)。支持SearchIndex功能的实例,建表时默认开启SearchIndex功能。表格建好后,通过【索引管理】进入索引页面。
注意:创建索引后,表的Stream功能会默认开启,如果此时关闭Stream功能,将会影响SearchIndex,导致索引无法同步。初始状态,用户的索引列表为空,用户点击【创建索引】后天厨创建窗口。单个表可创建多索引,根据自身需要设计索引,邀测阶段每个实例最多创建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不推荐设置 |
索引创建后,在索引管理页面可看到表下所有索引列表,如下图:
点击【索引字段】后,查看该索引的字段信息如下图,通过SDK创建的含有NESTED、GEO_POINT的字段信息也会展示,控制台暂不支持两种类型字段创建与查询。
数据查询前,别忘记主表数据是空的,记着插入数据。如下为数据的示例用户试用可仅插入几个字段
表名:"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 | ||
...... | ...... | ...... |
点击【数据查询】后,填写查询条件,
条件类型 | 英文 | 说明 |
精确查询 | 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。
转载地址:http://vwdeo.baihongyu.com/