基于phoenix的Hbase二级全文索引方法及系统技术方案

技术编号:24206444 阅读:50 留言:0更新日期:2020-05-20 14:52
本发明专利技术提出基于phoenix的Hbase二级全文索引方法及系统,包括步骤:对Hbase原始数据表建立二级全文索引表,并存储在Elasticsearch存储引擎中,建立二级全文索引表与Hbase原始数据表的关联外键,使得全文检索条件下推到Elasticsearch存储引擎后Elasticsearch存储引擎全文索引表的查询结果为Hbase原始数据表的rowkey;在进行全文索引时,phoenix查询服务器将客户端查询语句转换为Elasticsearch存储引擎可执行的查询表达式,并下推Elasticsearch存储引擎查询;phoenix查询服务器将Elasticsearch存储引擎返回的查询结果作为Hbase原始数据表的RowKey集合去Hbase存储引擎中查询,并将查询的最终结果返回给客户端。本发明专利技术将二级索引功能转换成了一次基于ElasticSearch的全文索引和一次基于HBase的RowKey查询,扩充了原有的Phoenix的功能,满足用户全文检索的需求。

Two level full text index method and system of HBase based on Phoenix

【技术实现步骤摘要】
基于phoenix的Hbase二级全文索引方法及系统
本专利技术涉及数据库索引
,尤其是基于phoenix的Hbase二级全文索引方法及系统。
技术介绍
HBase的优势是RowKey查询和范围查询,非RowKey查询则会变得异常缓慢,phoenix针对这一特性,提供了基于HBase的二级索引功能。Phoenix是通过创建两个HBase表来完成的二级索引功能的,即建立索引的时候会建立一个索引表indextable1,索引表的RowKey列是原始表的非RowKey列。但是,这种二级索引技术存在以下缺陷:由于原数据表和索引表均存储在HBase中,所以索引表的查询也要求是RowKey查询,对于原始表非RowKey列全文索引的查询则不能满足。
技术实现思路
专利技术目的:为了满足Phoenix基于HBase的二级全文索引需求,本专利技术提出一种基于phoenix的Hbase二级全文索引方法及系统。技术方案:为实现上述目的,本专利技术提出以下技术方案:基于phoenix的Hbase二级全文索引方法,包括步骤:(1)利用phoenix查询服务器对Hbase原始数据表建立二级全文索引表,并存储在Elasticsearch存储引擎中;(2)建立二级全文索引表与Hbase原始数据表的关联外键,使得全文检索条件下推到Elasticsearch存储引擎后Elasticsearch存储引擎全文索引表的查询结果为Hbase原始数据表的rowkey;(3)在进行全文索引时,phoenix查询服务器获取客户端查询语句,将查询语句解析成抽象语法树,将抽象语法书转换为Elasticsearch存储引擎可执行的查询表达式;Elasticsearch存储引擎执行查询表达式后返回查询结果;(4)phoenix查询服务器将Elasticsearch存储引擎返回的查询结果作为Hbase原始数据表的RowKey集合去Hbase存储引擎中查询,并将查询的最终结果返回给客户端。进一步的,所述基于Elasticsearch和phoenix实现的二级全文索引方法还包括步骤:phoenix查询服务器对二级全文索引表进行维护,包括:二级全文索引表创建、修改,以及二级全文索引表中数据的插入、删除、修改。进一步的,所述基于Elasticsearch和phoenix实现的二级全文索引方法还包括步骤:当Hbase原始数据表的数据有插入/删除/修改操作时,phoenix查询服务器根据Hbase原始数据表的操作信息生成Hbase原始数据表更新数据至二级全文索引表更新数据的逻辑,并根据生成的逻辑更新二级全文索引表。进一步的,所述基于phoenix的Hbase二级全文索引方法中,更新二级全文索引表通过RegionSever提供的钩子函数实现。进一步的,所述将抽象语法书转换为Elasticsearch存储引擎可执行的查询表达式的具体步骤包括:获取抽象语法树的查询表达式;解析查询表达式的restful查询部分;通过phoenix查询服务器的DSLBuilder创建能够被的Elasticsearch存储引擎执行的restful查询语句。本专利技术还提出基于phoenix的Hbase二级全文索引系统,包括:Phoenix查询服务器、Hbase存储引擎、Elasticsearch存储引擎;其中,Hbase存储引擎存储Hbase原始数据表;Elasticsearch存储引擎存储Hbase原始数据表的二级全文索引表,并执行Phoenix查询服务器下推的查询语句;Phoenix查询服务器为Hbase原始数据表建立二级全文索引表,建立二级全文索引表与Hbase原始数据表的关联外键,并对二级全文索引表进行维护;在进行全文索引时,phoenix查询服务器获取客户端查询语句,将查询语句解析成抽象语法树,将抽象语法书转换为Elasticsearch存储引擎可执行的查询表达式;将Elasticsearch存储引擎返回的查询结果作为Hbase原始数据表的RowKey集合去Hbase存储引擎中查询,并将查询的最终结果返回给客户端。进一步的,所述二级全文索引表与Hbase原始数据表的关联外键,使得全文检索条件下推到Elasticsearch存储引擎后Elasticsearch存储引擎全文索引表的查询结果为Hbase原始数据表的rowkey。进一步的,所述对二级全文索引表进行维护包括:二级全文索引表创建、修改,以及二级全文索引表中数据的插入、删除、修改。进一步的,phoenix查询服务器执行对Hbase原始数据表中数据的插入/删除/修改操作时,同时根据Hbase原始数据表的操作信息生成Hbase原始数据表更新数据至二级全文索引表更新数据的逻辑,并根据生成的逻辑更新二级全文索引表。有益效果:与现有技术相比,本专利技术具有以下优势:本专利技术将存储索引数据的表放在了ElasticSearch引擎上。将二级索引功能转换成了一次基于ElasticSearch的全文索引和一次基于HBase的RowKey查询。扩充了原有的Phoenix的功能,满足用户全文检索的需求。附图说明图1为本专利技术实施例涉及的基于phoenix的Hbase二级全文索引系统的整体架构图;图2为本专利技术实施例涉及的基于phoenix的Hbase二级全文索引方法中使用全文索引条件查询数据的流程图。具体实施方式通过分析现有的Phoenix基于HBase做的二级索引的功能,我们获取了其实现的原理:就是创建一个额外的HBase表来存储索引数据,然后通过将基于二级索引的查询转化成了基于HBase的两次RowKey查询来完成功能。本专利技术在此基础上,将存储索引数据的表放在了ElasticSearch引擎上。将二级索引功能转换成了一次基于ElasticSearch的全文索引和一次基于HBase的RowKey查询。扩充了原有的Phoenix的功能,满足用户的全文检索需求。下面将结合附图和具体实施例对本专利技术作更进一步的说明。但应当理解的是,本专利技术可以以各种形式实施,以下在附图中出示并且在下文中描述的一些示例性和非限制性实施例,并不意图将本专利技术限制于所说明的具体实施例。本实施例给出根据本专利技术的基于phoenix的Hbase二级全文索引方法的一种实施方式,包括以下步骤:(1)利用phoenix查询服务器对Hbase原始数据表建立二级全文索引表,并存储在Elasticsearch存储引擎中;(2)建立二级全文索引表与Hbase原始数据表的关联外键,使得全文检索条件下推到Elasticsearch存储引擎后Elasticsearch存储引擎全文索引表的查询结果为Hbase原始数据表的rowkey;(3)在进行全文索引时,phoenix查询服务器获取客户端查询语句,将查询语句解析成抽象语法树,将抽象语法书转换为Elasticsearch存储引本文档来自技高网...

【技术保护点】
1.基于phoenix的Hbase二级全文索引方法,其特征在于,包括步骤:/n(1)利用phoenix查询服务器对Hbase原始数据表建立二级全文索引表,并存储在Elasticsearch存储引擎中;/n(2)建立二级全文索引表与Hbase原始数据表的关联外键,使得全文检索条件下推到Elasticsearch存储引擎后Elasticsearch存储引擎全文索引表的查询结果为Hbase原始数据表的rowkey;/n(3)在进行全文索引时,phoenix查询服务器获取客户端查询语句,将查询语句解析成抽象语法树,将抽象语法书转换为Elasticsearch存储引擎可执行的查询表达式;Elasticsearch存储引擎执行查询表达式后返回查询结果;/n(4)phoenix查询服务器将Elasticsearch存储引擎返回的查询结果作为Hbase原始数据表的RowKey集合去Hbase存储引擎中查询,并将查询的最终结果返回给客户端。/n

【技术特征摘要】
1.基于phoenix的Hbase二级全文索引方法,其特征在于,包括步骤:
(1)利用phoenix查询服务器对Hbase原始数据表建立二级全文索引表,并存储在Elasticsearch存储引擎中;
(2)建立二级全文索引表与Hbase原始数据表的关联外键,使得全文检索条件下推到Elasticsearch存储引擎后Elasticsearch存储引擎全文索引表的查询结果为Hbase原始数据表的rowkey;
(3)在进行全文索引时,phoenix查询服务器获取客户端查询语句,将查询语句解析成抽象语法树,将抽象语法书转换为Elasticsearch存储引擎可执行的查询表达式;Elasticsearch存储引擎执行查询表达式后返回查询结果;
(4)phoenix查询服务器将Elasticsearch存储引擎返回的查询结果作为Hbase原始数据表的RowKey集合去Hbase存储引擎中查询,并将查询的最终结果返回给客户端。


2.根据权利要求1所述的基于phoenix的Hbase二级全文索引方法,其特征在于,还包括步骤:
phoenix查询服务器对二级全文索引表进行维护,包括:二级全文索引表创建、修改,以及二级全文索引表中数据的插入、删除、修改。


3.根据权利要求2所述的基于phoenix的Hbase二级全文索引方法,其特征在于,还包括步骤:
当Hbase原始数据表的数据有插入/删除/修改操作时,phoenix查询服务器根据Hbase原始数据表的操作信息生成Hbase原始数据表更新数据至二级全文索引表更新数据的逻辑,并根据生成的逻辑更新二级全文索引表。


4.根据权利要求3所述的基于phoenix的Hbase二级全文索引方法,其特征在于,更新二级全文索引表通过RegionSever提供的钩子函数实现。


5.根据权利要求1所述的基于phoenix的Hbase二级全文索引方法,其特征在于,所述将抽象语法书转换为Elasticsearch存储引擎可执行的查询表达式的具体步骤包括:获取抽象语法树的查询表达式;解析查询表...

【专利技术属性】
技术研发人员:于伟
申请(专利权)人:紫光云南京数字技术有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1