[发明专利]一种查询elasticsearch的实现方法及系统有效
申请号: | 201710194847.1 | 申请日: | 2017-03-28 |
公开(公告)号: | CN106934062B | 公开(公告)日: | 2020-05-19 |
发明(设计)人: | 杨佳佳;谢胜利 | 申请(专利权)人: | 广东工业大学 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2453;G06F16/2458 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 罗满 |
地址: | 510062 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 查询 elasticsearch 实现 方法 系统 | ||
1.一种基于calcite的sql查询elasticsearch的实现方法,其特征在于,包括:
获取输入的SQL语句;
根据提供的元数据对所述SQL语句进行元数据验证;
在验证通过后对所述SQL语句进行解析得到SQL语法树;
利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集;
其中,所述元数据的提供过程包括:
获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;
通过覆写getTableMap()使calcite可通过表名找到Table实例;
通过覆写Table类中的RelDataType getRowType(RelDataTypeFactory typeFactory)以提供字段名称以及类型元数据。
2.根据权利要求1所述的实现方法,其特征在于,所述附加规则包括:过滤规则、排序规则和聚合规则;其中,所述排序规则为一个或多个字段的升序或降序;所述聚合规则为实现SQL聚合函数至elasticsearch聚合API的映射。
3.根据权利要求2所述的实现方法,其特征在于,所述过滤规则具体为:
将所述SQL语法树中第一符号翻译为elasticsearch中的rangeQuery;
在SQL的模式匹配中,若模式串不以第二符号开头,则翻译为elasticsearch中的prefixQuery,否则翻译为elasticsearch中的wildcardQuery;
将where子句中的和以及或逻辑,翻译为elasticsearch中的boolQuery;
其中,所述第一符号为、=、或=;第二符号为_或%。
4.根据权利要求1-3任一项所述的实现方法,其特征在于,还包括:
根据所述元数据的字段类型信息对所述elasticsearch返回的数据进行转换,并利用迭代器返回查询结果集。
5.一种基于calcite的sql查询elasticsearch的实现系统,其特征在于,包括:
JDBC模块,用于获取用户输入的SQL语句,并将所述SQL语句发送到calcite转换模块,并接收所述calcite转换模块返回的查询结果集;
calcite转换模块,用于根据提供的元数据对接收到的所述SQL语句进行元数据验证;在验证通过后对所述SQL语句进行解析得到SQL语法树;利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集;
其中,所述calcite转换模块,包括:
元数据提供单元,用于获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;通过覆写getTableMap()使calcite可通过表名找到Table实例;通过覆写Table类中的RelDataType getRowType(RelDataTypeFactorytypeFactory)以提供字段名称以及类型元数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东工业大学,未经广东工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710194847.1/1.html,转载请声明来源钻瓜专利网。