索引查询服务(terminator index searcher,简称TIS)是一套为广大ISV,商家量身定制的,高效、稳定的云端查询加速服务。TIS可轻松解决大数据背景下数据库的模糊、聚合、多表合并查询存在的性能瓶颈。使用TIS可以有效缓解复杂查询对数据库的压力,从而保证企业IT系统整体的稳定性。
进入workstation的页面,选择左边的数据库下面的数据库加速服务,点击进入:
进入TIS索引查询服务控制台页面后,会有索引管理和索引创建两个主要选项卡。点击索引管理,会出现对应的索引列表页面:
(1) 如果索引列表为空或需要创建新的索引,则需要首先点击索引创建按钮,进行索引创建;
(2) 如果当前已有索引存在,但尚未激活,可以点击激活按钮,进行索引激活;
(3) 如果当前已有索引存在,并且已激活,可以点击管理按钮或者索引名称,直接进行索引管理;
如果索引不再使用,可以直接点击删除按钮,进行删除。
点击索引创建按钮,可以进入创建索引流程,主要有以下五个步骤,下面依次详细说明。
索引名称为4-20个字符,以大小写字母开头,由字母和下划线组成,索引名长度:0/20,建议输入业务相关的名称,最好简单易记。
备注框里可以填写业务相关的信息,方便以后的查看。
目前提供RDS数据源供选择,后期会有多种数据源支持,点击一下RDS图标,可以看到需要选择数据规模,这里的数据规模决定了服务需要的相应资源,每一个选项上都有相关的解释。
(1) QPS 规模:即每秒查询峰值上限,超过此上限的查询请求将被丢弃。
(2)文档规模:索引文档数的上限,超过此上限,新增加的文档将无法构建索引。
(3)平均查询命中数:单次查询可能命中的文档数,命中文档数越多,应用的系统资源要求越高。
数据源选择页面,这里会自动展示出当前账号在TAE内的RDS实例ID,以及当前实例下的所有数据库。点击数据库名,会展示出该库下面的所有表名。选择需要创建索引的表名,点击添加。注意:用户可以选择其中一张或多张表,请注意,多张表,必须保证表的字段结构一模一样,否则无法通过验证。
选择多张字段结构不一致的表是无法通过验证的。
元数据管理页面会展示出当前已选择表的所有字段信息,对于每一个字段可以选择相关操作:
(1) 字段类型:创建索引时需要设置的类型,可以与数据库中不一致;
(2) 设置主键:数据库主键字段;
(3) 设置默认值:数据库内容为空的字段必须设置默认值;
(4) 数据处理:数据构建索引前可以进行预处理;
(5) 可搜索:勾选表示该列可以被单独搜索;
注意: “可搜索”和“可展示”至少选择一个;
(6) 可展示:勾选表示搜索结果集将包含此列;
注意:全部勾选,可能导致索引数据量增加,查询中不需要返回的字段建议取消勾选此项;
(7) 区间查询:勾选后,此列支持区间查询,仅支持int或者long型字段的区间查询;
(8) 分词方法:字段类型为string的字段支持分词,可以自由选择需要的分词方法,常用的分词方法有包括:(a) 庖丁分词:采用庖丁分词器进行分词;(b) like查询分词:类似于数据库的模糊查询;(c) 空格分词:采用空格分词,常用于英文或空格分开多字符的字段;(d) 正则分词:支持自定义的分词方法,例如:该列以标点符号进行分词,可以输入对应的标点符号,将会采用该标点进行分词。
(9) 删除:根据业务需求可以选择删除某个不需要构建索引的字段;
(10) 添加:添加新的自定义字段,用于新的业务需求;
页面左下方,需要选择数据分组键,这个分组键是当数据源很大时,需要进行索引切分,将索引分成多片,部署在不同机器上,而需要采用的字段,这里一般选择主键。后面的uniqueKey是表示索引的唯一键,避免索引中出现重复的记录数,一般默认为主键。
编辑元数据后,点击下一步,会进入索引确认页面
页面上会展示索引名称、创建用户、数据来源、数据库名、数据库表、数据列数等信息。核对无误之后,可以点击“确认创建索引”,如果有问题,可以点击上一步,返回重新编辑。
点击“确认创建索引”后,索引任务已成功创建,但是尚未激活,需要激活,才能索引数据,并提供搜索服务。
用户可以直接点击页面上的“激活索引”,进行索引激活,或者返回索引列表,在索引列表页面点击激活按钮。
用户在索引创建最后一步,或者索引列表点击激活按钮,会进入索引激活流程。
点击激活,出现如下页面,用户需要选择导入全部数据还是最多导入一万条数据,一般情况下,如果是测试,建议选择最多导入一万条数据,保证资源的合理利用。
点击2.1中的确认激活后,会出现当前索引激活的实时日志,这个过程主要包括四个部分:(1)源数据导入;(2) 索引构建;(3) 索引切换;(4) TIS服务发布。页面上会展示出当前索引激活过程中的实时状态:
当页面上出现如下状态时,表示TIS服务发布成功,业务方可以开始调用TIS的API进行索引查询服务。
注意:数据源的数据量规模,决定了激活过程的时间长短,如果数据量很大的话,建议一段时间之后,再观察是否成功,或者直接关掉实时日志窗口。
关闭实时日志窗口后,页面将进入当前索引的索引管理页面。
在索引列表页面点击索引名称,或点击了索引名称右方的管理按钮,或者索引激活完成后,都将会进入索引管理页面。
如果出现如下页面,表示索引服务已经创建成功。请直接进入索引基本信息页面。
如果出现如下页面,表示索引尚未激活成功,或者出现相关故障。
相关故障分析:点击日志历史信息选项卡,如果该索引构建的“状态”栏是正在进行中,表示当前索引正在创建,请耐心等待;如果是失败,可以返回索引基本信息页面,重新激活。如果是成功,请联系TIS技术支持,可以加入旺旺群:1205087413。
索引基本信息页面主要包含了索引的基本信息和索引数据源信息。
如果该应用的数据源地址发生了变更,可以点击“修改数据源”,更换数据源,将会重新进行索引创建,具体流程可以参考索引创建流程(从1.2开始)。
点击索引查询选项卡,进入索引查询页面:
点击“打开索引查询页面”按钮,可以进入索引查询页面,用户可以使用索引查询页面进行测试查询。
查询页面支持任意组合的查询语句查询,还提供统计查询(facet)、分组查询(group)和高亮查询(highlight)三种高级查询,详细的查询语法,可以参考《TIS查询手册》 。
元数据管理页面主要是在需要对元数据进行相关修改,或数据源字段发生变更,需要同步时使用。
元数据管理页面允许管理本对应的元数据信息,可以在本页面执行以下三种操作:
(1) 修改任何一个字段的任意属性;
(2) 点击同步数据源列信息,将同步数据源新增或删除的列信息;
(3) 点击添加按钮增加一个自定义的列。
以上三种操作,只有当你点击修改元数据并重新构建索引后才会生效。生效意味着:本次修改将替换之前的索引内容,同时服务端将重新构建索引,新索引会覆盖老的索引。
该页面主要包含了索引创建过程中相关配额参数设置,如果业务场景有变更或数据规模以及访问量增加,当前的配额已经不满足实际需求,可以通过这个页面进行相关修改。点击修改,进行相关操作。
日志历史信息页面主要是进行日志信息的管理,当2.1中点击激活按钮,弹出实时日志窗口后,关掉实时日常窗口,可以通过这个页面查看相关日志信息。
状态栏如果是正在进行,表示索引正在创建,可以点击“查看详细信息”或者“实时日志”,查看实时日志:
状态栏如果是失败,将会有错误信息抛出,也可以通过“查看详细信息”定位具体错误原因。
状态栏如果是成功,表示此次索引构建成功,可以进行相关查询操作,构建过程的日志,也可以通过“查看详细信息”进行查看。
数据统计页面主要是进行索引数据的统计信息,提供多个时间维度的统计:
主要统计索引的搜索次数(PV)和文档数,可以根据自己的需要进行相关的统计。
当源数据每天有大量增量数据时,索引同步会导致出现索引碎片,影响查询性能;或者源数据发生了字段或者其它变更时,需要时同步数据页面。页面主要包括:定时索引重建,手动索引重建和索引构建历史。
源数据发生了字段或者其它变更时,需要选择手动创建,直接点击“手动索引重建”,将会重新创建一次索引,弹出实时日志窗口。
当源数据每天有大量增量数据时,索引同步会导致出现索引碎片,影响查询性能,这种情况可以选择定时重建索引,设置定时任务,比如每天0点50分构建一次全量索引:
页面上将会生成定时任务,在每天00:50执行一次全量任务。
定时任务以及手动重建任务的日志历史都可以在索引构建历史下查看:
如果你是百川的应用,默认给你开通了tis的top调用权限,不需要去申请,如果你属于优站、爱淘宝、特色中国、店铺模块后台、互动应用后台等业务需要在http://my.open.taobao.com/登陆账号,选择你的应用,在证书权限管理页面,申请"TIS终端索引查询服务"的增值权限。如下图所示:
进入my.open.taobao.com , 在应用里面,点击SDK下载,找到 Taobao App Engine SDK ,根据你的对应的编程语言选择相应的版本下载:
请首先在tae平台下载SDK,然后编写查询代码:
示例:
import com.taobao.api.ApiException; import com.taobao.api.DefaultTaobaoClient; import com.taobao.api.TaobaoClient; import com.taobao.api.request.TisQueryRequest; import com.taobao.api.response.TisQueryResponse; public class TaeTest { private final static String url="http://gw.api.taobao.com/router/rest?"; private final static String appkey="***"; //当前账号申请的Appkey,请填写 private final static String secret="***"; //当前账号申请的AppSecret,请填写 public static void main(String[] args) { TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); TisQueryRequest req = new TisQueryRequest (); req.setServiceName("search4_53_just_10000"); //索引名称,在TIS里面的创建的名称进行访问 req.setQueryStr("q=*:*"); // 业务查询参数,根据业务场景可自行拼装 try { TisQueryResponse response = client.execute(req); System.out.println(response.getQueryResult()); } catch (ApiException e) { e.printStackTrace(); } } }
$c = new TopClient; $c->appkey = appkey; $c->secretKey = secret; $req = new TisQueryRequest; $req->setServiceName("search4wjb"); //索引名称 $req->setQueryStr("q=title:xxx&routeValue=seller_id:4&start=0&rows=20"); //业务查询参数,根据商家业务场景自行拼装 $resp = $c->execute($req);