云HBase发布全文索引服务,轻松应对复杂查询-阿里云开发者社区

开发者社区> 天斯> 正文

云HBase发布全文索引服务,轻松应对复杂查询

简介: 云HBase发布了“全文索引服务”功能,自2019年01月25日后创建的云HBase实例,可以在控制台免费开启此“全文索引服务”功能。使用此功能可以让用户在HBase之上构建功能更丰富的搜索业务
+关注继续查看

云HBase发布了“全文索引服务”功能,自2019年01月25日后创建的云HBase实例,可以在控制台免费开启此“全文索引服务”功能。使用此功能可以让用户在HBase之上构建功能更丰富的搜索业务,不再局限于KV简单查询,不再苦恼于设计各种rowkey,不再后怕日益变化的HBase复杂查询业务。“全文索引服务”为云HBase增强查询能力而设计,自动同步数据,用户只需重点关注如何使用强大的检索功能来丰富自己的业务架构。

为什么要增强HBase的检索能力

我们在使用HBase的时候都会面临一个问题,就是设计HBase的rowkey。可尽管我们工程师是多么的优秀,整理罗列了所有业务检索需求,并裁剪折中了这样那样的业务,缺依然不能设计一个全能的rowkey来满足各种业务查询需求。
例如在某物流管理系统中,我们需要对收件人姓名/手机/地址、寄件人姓名/手机/地址、运单编号/开始时间/结束时间、邮递员姓名/手机等条件,进行任意组合查询。这种复杂查询情况下,HBase原先的KV查询无法满足,尽管我们如何设计rowkey,都不能满足查询条件的任意性。另外,在这些查询中,可能会涉及到姓名/地址/手机号等条件的模糊查询,这也是HBase rowkey不能很好满足的。
又例如在某新零售业务中,需要对商品标题或者描述内容进行关键字查询,在HBase中我们只能使用模糊查询来实现,但模糊查询在HBase中是比较低效的。类似这种标题/描述内容中进行关键字查询业务,比较合适使用分词查询,这个功能HBase都无法提供满足。另外,在新零售查询业务中,为了提高用户体验,经常会提高搜索结果进行分类统计的需求,例如我们在电商网站中,搜索关键字“时尚”,在显示匹配此关键字结果的商品中,按照 衣服、电子、日用等类型进行了分类统计匹配结果,这样用户就可以选择对应的大类进行二次查询,快速查询到用户想要的商品,从而提高了用户体验。像这个功能,HBase也无法满足。
最终为了适应HBase系统的查询特点,对业务做了折中,只保留部分KV查询的业务,其他可以提高用户体验的各种查询业务被全部砍掉了。

总结下来,我们列出来了几个使用HBase进行查询业务设计时碰到的痛点:

  1. 无法满足任意条件组合查询
  2. 不能高效支持模糊查询
  3. 不支持关键字分词查询
  4. 不能高效支持多维度的排序/分页
  5. 不能对查询的结果集进行分类统计

云HBase全文索引服务,增强HBase检索能力

全文索引服务是为了增强HBase查询能力而设计,使得HBase除了强大的KV能力外,更加丰富了它的在复杂条件查询下的能力,具体抽象出来以下几个场景:

  1. 复杂条件任意查询
  2. 多维度排序
  3. 复杂条件分页
  4. 分词关键字查询
  5. 匹配结果集分类统计
  6. 常用min/max/avg/sum等stats统计

云HBase全文索引服务使用简单,只需要DDL阶段建立索引,后续自动进行数据索引同步,架构如下:
_

和自建的区别
功能 云HBase启用全文索引 自建HBase+indexer+solr HBase
简单rowkey查询 支持 支持 支持
复杂查询 支持 支持 不支持
索引同步 支持 支持 不支持
乱序同步 支持 不支持 ———
强一致 支持 不支持 ———
xml动态列 支持 不支持 ———

另外,自建hbase+indexer+solr存在几个bug,导致很多用户反馈的自建这种架构丢数据现象;云HBase对此进行了许多bugfix和改进。

如何使用云HBase全文索引服务

云HBase全文索引服务的使用,启用此服务后,只需要简单DDL建立索引即可,插入同步无限管理,用户只需关注后续查询要使用HBase api/Solr api进行构建丰富的业务查询即可。下面我们来简单体验下整个流程。

开启服务

“全文索引服务”属于云HBase的免费扩展服务,自2019年1月25日后创建的云HBase实例控制台,实例左侧点击“全文索引服务”详情页进行服务开启即可,如下:
全文索引服务开启页面
申请后的如下Solr访问地址以及WebUI连接,如图:
开通后页面
其中solr zk地址即可构造cloud solr client进行访问,此访问客户端自带负载均衡功能。Solr WebUI访问方式与云HBase WebUI访问一致,第一次访问是设置好用户密码与白名单,然后直接点上面的链接即可跳转到Solr的WebUI。

建立索引
  1. 下载索引管理客户端工具
wget http://public-hbase.oss-cn-hangzhou.aliyuncs.com/installpackage/solr-7.3.1-ali-1.0.tgz
tar zxvf solr-7.3.1-ali-1.0.tgz
  1. 修改solr-7.3.1-ali-1.0/bin/solr.in.sh文件的ZK_HOST如下:
ZK_HOST=zk1:2181,zk2:2181,zk3:2181/solr

zk地址即为上图控制台开通全文索引服务后的solr zk访问地址。

  1. 创建HBase表,开启replication同步机制
create  'solrdemo',{NAME=>'info',  REPLICATION_SCOPE=> '1'}
  1. 创建Solr表democollection
    第一步,修改并上传solrconfig.xml/schema,如果不需要修改,可使用demo默认config进行上传,如下:
solr-7.3.1-ali-1.0/bin/solr zk upconfig -d _democonfig  -n democollection_config -z zk1:2181/solr

第二步,使用刚上传的配置创建democollection,如下:

curl "http://hostname:8983/solr/admin/collections?action=CREATE&name=democollection&numShards=1&replicationFactor=1&collection.configName=democollection_config"

其中hostname可以使用master3-1中缀的zk hostname进行替换。

  1. 配置HBase solrdemo表到Solr democollection表的字段映射索引关系
    第一步,编辑index_conf.xml配置映射关系,例如:
<?xml version="1.0"?>
<indexer table="solrdemo">
<field name="name_s" value="info:q2" type="string"/>
<field name="age_i" value="info:q3" type="int"/>
<param name="update_version_l" value="true"/>
</indexer>

配置描述了hbase表solrdemo的 info:q2 info:3 分别映射成solr democollection里面的name_s和age_i 字段。并指定以string解析info:q2 列保存到name_s字段中,以int解析info:q3 保存到age_i中。其中solr collection的name_s、age_i是何种类型,是根据solr collection的配置觉得,默认采用动态类型推断,即根据collection字段的名字后缀判断类型进行存储。常见类型_i、_s、_l、_b、_f、_d分别对应int/string/long/boolean/float/double。当然,用户也可以直接指定字段类型。最后一个update_version_l为固定写法,保存document级别的最新更新时间。
第二步,使用工具将 index_conf.xml 设置关联hbase表solrdemo和solr表democollection的索引映射关系,命令如下:

solr-7.3.1-ali-1.0/bin/solr-indexer add  \
     -n demoindex  \
     -f indexer_conf.xml  \
     -c democollection

到此,我们就完成了索引的关系映射,随后正常插入hbase即可,就不需要关心索引同步,它会自动同步hbase solrdemo表的对应字段到solr democollection表的对应字段中。如上例映射如下:
77

其中,HBase表的rowkey映射到Solr表里面的id字段。

查询检索

查询较为简单,依然完全兼容开源HBase API和Solr API的操作,根据业务使用solr进行条件查询,结果集中,id字段就是所有符合条件的hbase rowkey,我们只有这个id转换为rowkey,并使用HBase API读取属于这个行的原数据即可。流程图大致如下:
用户查询流程

展望

  • 索引管理更简单易用
  • SQL入口接入全文索引服务
  • 全文引擎新一代更高效副本机制
  • 除了异步索引,同步索引也会后续支持
产品入口:

https://cn.aliyun.com/product/hbase

使用全文索引服务帮助文档:

https://help.aliyun.com/document_detail/88404.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数智新基石,贾扬清领衔阿里云大数据&AI年度十二大重磅发布!
产业数字化,数字产业化,今天各行各业的绝大多 数经济活动,都和数据的沉淀、分析、服务密不可分。我们亲身体会过从摸着石头过河到体系化建设的整个过程。在云上,我们逐渐简化纷繁复杂的技术架构,回归需求和场景的初心,让大数据与人工智能具备系统化、平台化、模块化的能力,为企业各个发展阶段的需求提 供多样化的支撑,成为企业数据与智能的新基石。
4162 0
数据库云HBase 版本spark服务支持D1机型
信息摘要: 数据库云HBase 版本spark服务支持D1机型,适合起步超过20T数据库的大客户,每GB存储单价最低。适用客户: 大企业版本/规格功能: spark支持D1机型产品文档: 数据库云HBase 版本spark服务支持D1机型,具体spark服务参考https://help.
480 0
mysql full text全文索引必要条件
show variables like 'ft_m%' 'ft_max_word_len', '84''ft_min_word_len', '4' 对于英文来说, ft_min_word_len=4是可以的。但是对于中文,需要为1. 要不就没有办法全文搜索了。
607 0
HBase查询优化
1.概述 HBase是一个实时的非关系型数据库,用来存储海量数据。但是,在实际使用场景中,在使用HBase API查询HBase中的数据时,有时会发现数据查询会很慢。本篇博客将从客户端优化和服务端优化两个方面来介绍,如何提高查询HBase的效率。
1214 0
用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询
用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询作者digoal 日期2017-12-05 标签PostgreSQL , 搜索引擎 , GIN , ranking , high light , 全文检索 , 模糊查询 , 正则查询 , 相似查询 , ADHOC查询 背景字符串搜索是非常常见的业务需求,它包括: 1、前缀+模糊查询。
5453 0
中国商业银行数字化转型调查研究报告发布,网商银行联手OceanBase打造未来金融业典范
蚂蚁金服自主研发的金融级分布式关系数据库OceanBase助力网商银行业务发展
933 0
改造Skywalking支持阿里云等带Http Basic的Elasticsearch服务
前言 最近公司skywalking服务经常出现大盘空白的情况,经查明,是由于ES的写入瓶颈造成线程阻塞,数据没有落地到ES造成。后综合运维成本等方面考虑,准备使用阿里云提供的Elasticsearch服务,阿里云的ES无论内外网都加上了Http Basic认证,但是skywalking6.x提供的RestHighLevelClient客户端并没有适配带Http Basic基础认证的ES服务,所以需要稍加改动下skywalking源码。
1829 0
+关注
10
文章
12
问答
来源圈子
更多
阿里云数据库:帮用户承担一切数据库风险,给您何止是安心!支持关系型数据库:MySQL、SQL Server、PostgreSQL、PPAS(完美兼容Oracle)、自研PB级数据存储的分布式数据库Petadata、自研金融级云数据库OceanBase支持NoSQL数据库:MongoDB、Redis、Memcache更有褚霸、丁奇、德哥、彭立勋、玄惭、叶翔等顶尖数据库专家服务。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载