CN106934062A - 一种查询elasticsearch的实现方法及系统 - Google Patents

一种查询elasticsearch的实现方法及系统 Download PDF

Info

Publication number
CN106934062A
CN106934062A CN201710194847.1A CN201710194847A CN106934062A CN 106934062 A CN106934062 A CN 106934062A CN 201710194847 A CN201710194847 A CN 201710194847A CN 106934062 A CN106934062 A CN 106934062A
Authority
CN
China
Prior art keywords
elasticsearch
sql
calcite
metadata
sql statement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710194847.1A
Other languages
English (en)
Other versions
CN106934062B (zh
Inventor
杨佳佳
谢胜利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong University of Technology
Original Assignee
Guangdong University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong University of Technology filed Critical Guangdong University of Technology
Priority to CN201710194847.1A priority Critical patent/CN106934062B/zh
Publication of CN106934062A publication Critical patent/CN106934062A/zh
Application granted granted Critical
Publication of CN106934062B publication Critical patent/CN106934062B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2445Data retrieval commands; View definitions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Abstract

本发明公开了一种基于calcite的sql查询elasticsearch的实现方法,包括:获取输入的SQL语句;根据提供的元数据对所述SQL语句进行元数据验证;在验证通过后对所述SQL语句进行解析得到SQL语法树;利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集;该实现方法解析SQL语句,完成SQL至elasticsearch java API的适配和优化;本发明公开了一种基于calcite的sql查询elasticsearch的实现系统,具有上述有益效果。

Description

一种查询elasticsearch的实现方法及系统
技术领域
本发明涉及数据处理技术领域,特别涉及一种基于calcite的sql查询elasticsearch的实现方法及系统。
背景技术
elasticsearch是一个实时的分布式搜索和分析引擎,其数据逻辑组织方式类似于关系型数据库,比如:elasticsearch会对数据进行索引(index),每个索引下都有类型(type),每个类型都有对应的mapping。这些概念类型于关系型数据库的库(database)、表格(table)和schema。
elasticsearch提供了特定的数据查询API接口(RESTful API或Java clientAPI),这些接口都需要对elasticsearch进行学习才能较好地使用。而数据分析工程师对于SQL语言更为熟悉,事实上,IT软件开发者基本上都更熟悉SQL语言。对于elasticsearch这样一个专注于搜索领域的引擎/服务器,不一样知晓,也不一定熟悉。那么一个很自然的需求就是,通过SQL语句来访问elasticsearch的数据。
SQL on elasticsearch相当于一个中间件,接收SQL语句作为输入,然后解析、优化、转换为elasticsearch所能接受的API,查询得到elasticsearch的数据后,作为结果输出。
现有的SQL on elasticsearch一般是作为elasticsearch服务器的一个插件,提供一种交互式的、简单的数据查看。比如:elasticsearch-sql是github上的一个第三方开源插件,与elasticsearch绑定后,可以在浏览器web页面输入SQL语句。插件会通过表格的方式返回数据。
但是目前其仅以插件形式存在,只能在web页面简单查看数据,不能集成到程序代码中,可用性不强。不管是SQL数据库查询,还是elasticsearch搜索引擎,它们都是应用于后台程序代码中。使用者基本上都是程序员。而elasticsearch-sql插件只是提供了一个查看elasticsearch数据的简单的可视化表格。输入一个SQL语句,出来一个表格,这对于程序员来说根本就没多大的作用。因为它不是以框架形式存在的,没有提供API接口以供程序中调用。而且还插件仅支持elasticsearch 2.3.x及以下的版本,不支持最新的5.x版本。其次,SQL查询语句支持度不够,比如不支持别名。如何克服上述缺点,是本领域技术人员需要解决的技术问题。
发明内容
本发明的目的是提供一种基于calcite的sql查询elasticsearch的实现方法及系统,解析SQL语句,完成SQL至elasticsearch java API的适配和优化。
为解决上述技术问题,本发明提供一种基于calcite的sql查询elasticsearch的实现方法,包括:
获取输入的SQL语句;
根据提供的元数据对所述SQL语句进行元数据验证;
在验证通过后对所述SQL语句进行解析得到SQL语法树;
利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集。
可选的,所述元数据的提供过程包括:
获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;
通过覆写getTableMap()使calcite可通过表名找到Table实例;
通过覆写Table类中的RelDataType getRowType(RelDataTypeFactorytypeFactory)以提供字段名称以及类型元数据。
可选的,所述附加规则包括:过滤规则、排序规则和聚合规则;其中,所述排序规则为一个或多个字段的升序或降序;所述聚合规则为实现SQL聚合函数至elasticsearch聚合API的映射。
可选的,所述过滤规则具体为:
将所述SQL语法树中第一符号翻译为elasticsearch中的rangeQuery;
在SQL的模式匹配中,若模式串不以第二符号开头,则翻译为elasticsearch中的prefixQuery,否则翻译为elasticsearch中的wildcardQuery;
将where子句中的和以及或逻辑,翻译为elasticsearch中的boolQuery;
其中,所述第一符号为>、>=、<或<=;第二符号为_或%。
可选的,本方案还包括:
根据所述元数据的字段类型信息对所述elasticsearch返回的数据进行转换,并利用迭代器返回查询结果集。
本发明还提供一种基于calcite的sql查询elasticsearch的实现系统,包括:
JDBC模块,用于获取用户输入的SQL语句,并将所述SQL语句发送到calcite转换模块,并接收所述calcite转换模块返回的查询结果集;
calcite转换模块,用于根据提供的元数据对接收到的所述SQL语句进行元数据验证;在验证通过后对所述SQL语句进行解析得到SQL语法树;利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集。
可选的,所述calcite转换模块,包括:
元数据提供单元,用于获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;通过覆写getTableMap()使calcite可通过表名找到Table实例;通过覆写Table类中的RelDataTypegetRowType(RelDataTypeFactorytypeFactory)以提供字段名称以及类型元数据。
可选的,所述calcite转换模块,包括:
过滤规则单元,用于将所述SQL语法树中第一符号翻译为elasticsearch中的rangeQuery;在SQL的模式匹配中,若模式串不以第二符号开头,则翻译为elasticsearch中的prefixQuery,否则翻译为elasticsearch中的wildcardQuery;将where子句中的和以及或逻辑,翻译为elasticsearch中的boolQuery;其中,所述第一符号为>、>=、<或<=;第二符号为_或%;
排序规则单元,用于将一个或多个字段进行升序或降序;
聚合规则单元,用于实现SQL聚合函数至elasticsearch聚合API的映射。
可选的,所述calcite转换模块,还包括:
转换单元,用于根据所述元数据的字段类型信息对所述elasticsearch返回的数据进行转换,并利用迭代器返回查询结果集。
本发明所提供的一种基于calcite的sql查询elasticsearch的实现方法,包括:获取输入的SQL语句;根据提供的元数据对所述SQL语句进行元数据验证;在验证通过后对所述SQL语句进行解析得到SQL语法树;利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集;
可见,该实现方法解析SQL语句,完成SQL至elasticsearch java API的适配和优化,支持最新的5.x版本的elasticsearch,添加SQL schema与elasticsearch mapping的映射;实现SQL语句查询elasticsearch数据,使得数据处理工程师可以在不了解elasticsearch的情况下,能使用数据库查询语言,通过类似数据库访问的手段来获取搜索引擎返回的数据;本发明还提供了一种基于calcite的sql查询elasticsearch的实现系统,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的基于calcite的sql查询elasticsearch的实现方法的流程图;
图2为本发明实施例所提供的过滤语句的SQL语法树的示意图;
图3为本发明实施例所提供的基于calcite的sql查询elasticsearch的实现系统的结构框图。
具体实施方式
本发明的核心是提供一种基于calcite的sql查询elasticsearch的实现方法及系统,解析SQL语句,完成SQL至elasticsearch java API的适配和优化。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面为本实施例中出现的主要名词的解释:
elasticsearch是一个实时的分布式搜索和分析引擎,用于快速处理大规模数据。它可用于全文搜索,结构化搜索以及分析,当然也可三者组合使用。elasticsearch建立于全文搜索引擎Apache lucene的基础上。lucene是当今最先进,最高效的全功能开源搜索引擎框架。但也仅仅是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成lucene,需要很多的学习了解,才能明白它是如何运行的且lucene确实非常复杂。
elasticsearch使用lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,不需要了解其背后复杂的lucene的运行原理。当然elasticsearch并不仅仅是lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作:
1、分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
2、实时分析的分布式搜索引擎。
3、扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
这么多的功能被集成到一台服务器上,可以轻松地通过客户端或者任何程序语言与elasticsearch的RESTful API进行交流。
elasticsearch的上手非常简单。它附带了很多非常合理的默认值,这让初学者很好地避免一上手就要面对复杂的理论。它安装好了就可以使用了,用很小的学习成本就可以变得很有生产力。随着越学越深入,还可以利用elasticsearch更多高级的功能,整个引擎可以很灵活地进行配置。可以根据自身需求来定制属于自己的elasticsearch。
elasticsearch的上手非常简单。它附带了很多非常合理的默认值,这让初学者很好地避免一上手就要面对复杂的理论。它安装好了就可以使用了,用很小的学习成本就可以变得很有生产力。随着越学越深入,还可以利用elasticsearch更多高级的功能,整个引擎可以很灵活地进行配置。可以根据自身需求来定制属于自己的elasticsearch。
使用案例:
1、维基百科使用elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。
2、英国卫报使用elasticsearch来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。
3、StackOverflow将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。
4、GitHub使用elasticsearch来检索超过1300亿行代码。
5、Goldman Sachs使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。
SQL(Structured Query Language,结构化查询语言),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。一般情况下,使用SQL语句的场景局限于访问关系数据库如MySQL、Oracle等,或者通过hive查询HDFS上的数据。但也会有一些复杂的SQL应用场景,比如通过SQL语句查询内存中的数据结构、文件、访问NOSQL数据库,甚至跨数据源访问(比如Hive和MySQL进行join查询)。
本实施例解析SQL语句,完成SQL至elasticsearch java API的适配和优化。SQL语句的解析涉及到编译原理,其步骤包括:词法分析、语法分析、语义分析。这里的技术方案选型是apache calcite(简称calcite)。即本实施例的方法是基于calcite实现的,其执行主体可以是calcite中间件(即calcite转换模块)。其中,Apache calcite是面向Hadoop的新型查询引擎,它提供了标准的SQL语言、多种查询优化和连接各种数据源的能力,除此之外,calcite还提供了OLAP和流处理的查询引擎。正是有了这些诸多特性,calcite项目在Hadoop中越来越引人注目,并被众多项目集成。具体请参考图1,图1为本发明实施例所提供的基于calcite的sql查询elasticsearch的实现方法的流程图;该方法可以包括:
S100、获取输入的SQL语句;
具体的,本实施例中获取的SQL语句可以是从JDBC接口传过来的。本实施例并不限定具体的SQL语句内容,其具体由用户进行输入。
S110、根据提供的元数据对SQL语句进行元数据验证;
其中,关系型数据库中,数据都以特定的二维表形式组织。库中有表,表中有字段,字段有类型,字符集,排序方式等,以MySQL数据库为例说明,所有普通表的这些属性数据都存放在名为mysql的库中,这些数据就是所谓的元数据。因为该方法中calcite中间件并不负责存储实际要查询的数据,自然也不负责元数据的存储,因此需要提供元数据,即提供数据库、表的定义,字段的名称、类型等,以便对SQL语句进行验证和查询。
可选的,元数据的提供,通过继承calcite的相应的抽象类,并结合elasticsearch,以实现具体的代码。具体的,元数据的提供过程可以包括:
获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;
通过覆写getTableMap()使calcite可通过表名找到Table实例;
通过覆写Table类中的RelDataType getRowType(RelDataTypeFactorytypeFactory)以提供字段名称以及类型元数据。
具体的,数据库是calcite中以Schema抽象类来表示。当calcite接收到一个SQL语句时,根据要查询的数据库名,通过SchemaFactory构造一个Schema实例,以获取元数据。SchemaFactory是一个抽象类,需要自己继承并实现Schema create(SchemaPlusparentSchema,String name,Map<String,Object>operand)方法。其中,数据库中的Schema为数据库对象的集合,一个用户一般对应一个Schema。
本实施例提供一种具体实现子类是ElasticsearchSchemaFactory,其create()方法的逻辑是获取elasticsearch连接的相关信息,如IP地址,端口号,索引名,集群名,然后创建一个ElasticsearchSchema实例,表征一个数据库对象。ElasticsearchSchema中,初始化操作是建立与elasticsearch服务器的连接,覆写getTableMap()方法,使得calcite可通过表名找到Table实例。
数据表在calcite中以Table抽象类来表示。calcite根据SQL语句中的表名,由Schema.getTableMap()找到相应的Table实例。本实施例提供一种具体实现为elasticsearch的一个type就对应一个数据表。通过ElasticsearchSchema中建立的与服务器的连接,获取mapping信息,解析得到type的信息,并创建Table实例。
表中的字段类型在calcite中以RelDataType表示。覆写Table类中的RelDataTypegetRowType(RelDataTypeFactory typeFactory)以提供字段名称、类型等元数据。这里的主要优化点是:elasticsearch中的一个type对应了一个mapping,读取其mapping信息,并解析其类型信息,建立一一对应的字段元数据。
S120、在验证通过后对SQL语句进行解析得到SQL语法树;其中,SQL语法树也即执行计划。
S130、利用附加规则将SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集。
其中,附加规则涉及到核心的翻译逻辑,即在解析得到SQL语句的意图之后,将这些查询意图转换为elasticsearch能理解的API。因为对SQL语句进行解析之后,最终会得到一棵SQL语法树。这个SQL语法树其实就是逻辑执行计划。下面以一个简单的过滤语句进行说明:
比如,一个简单的过滤语句:select*from person where id<10,会生成的语法树的一部分如图2所示。也就是说,先对表进行扫描操作,然后对得到的数据行进行过滤操作。附加规则可应用于执行计划中的某部分,针对执行计划中的某些操作进行优化。附加规则包括匹配条件(想对执行计划的哪部分进行优化)和查询执行动作(进行哪些优化)。以上述SQL语句为例,它对应图2的执行计划。那么附加规则应该是:
匹配条件:父结点为Filter,而子结点为TableScan的子树。
查询执行动作:获取过滤条件,翻译为elasticsearch API(对elasticsearch的操作),并执行。
优选的,本实施例并不限定具体的附加规则的种类,例如附加规则可以包括:过滤规则、排序规则和聚合规则。本实施例也不限定具体每种附加规则的具体内容。其可以根据开发者进行设定和修改。
其中,Filter Rule即过滤规则SQL过滤语句的优化是核心。因为SQL语句中,where子句的条件是多种多样的,对应的elasticsearch的查询API也各不相同。这里的优化点可以包括:
1、第一符号(>,>=,<,<=)均翻译为elasticsearch中的rangeQuery。
2、SQL的模式匹配中若模式串不以第二符号(_或%)开头,则优化为elasticsearch中的prefixQuery(前缀查询),否则使用wildcardQuery。
3、where子句中的and/or逻辑,转化为boolQuery。
Sort Rule即排序规则,较为简单,就是针对一个或多个字段的升序或降序。需要注意的是:calcite解析SQL语句而得到的语法树中,查询结果集的offset,size等信息包含于Sort子树中。因此,对于offset,size等逻辑的翻译也在这里实现。
Aggregate Rule即聚合规则,实现SQL聚合函数至elasticsearch聚合API的映射。elasticsearch中聚合API的种类较多,因此,需要逐一映射,常见的聚合逻辑有:min,max,count,sum,avg等。
具体的,由于数据存储的位置、介质很多时候是多样化的,而该方法形成了一个calcite中间件起到适配的作用。开发者或称为调用者使用calcite已有的adapter(适配器)或者自定义的adapter,在这些数据上建立一个关系模型,统一地通过SQL语句来查询这些数据;最终可以将查询结果集返回给JDBC接口(即JDBC客户端或JDBC或JDBC模块)。calcite对接JDBC接口,并能解析SQL,进行元数据验证后,将SQL语句转化为执行计划(即SQL语法树)。附加规则在calcite的查询优化阶段起作用。同时,calcite并不负责存储数据,它纯粹就是一个中间件,只负责对SQL语句进行解析,并转换成针对于第三方数据源的执行计划。
基于上述技术方案,本发明实施例提供的基于calcite的sql查询elasticsearch的实现方法,解析SQL语句,完成SQL至elasticsearch java API的适配和优化,支持最新的5.x版本的elasticsearch,且添加SQL schema与elasticsearch mapping的映射;即实现SQL语句查询elasticsearch数据,使得数据处理工程师可以在不了解elasticsearch的情况下,能使用数据库查询语言,通过类似数据库访问的手段来获取搜索引擎返回的数据。
基于上述实施例,为了使得返回的查询结果集更加可靠,样式更加符合调用者需求,本实施例还可以包括:
根据元数据的字段类型信息对elasticsearch返回的数据进行转换,并利用迭代器返回查询结果集。
具体的,该步骤主要是为了实现查询结果集的转换与组织,这决定了最终返回给JDBC客户端(JDBC或JDBC模块),或者说返回给调用者的结果集的样式。在本实施例中参考元数据中的字段类型信息,将结果集进行必要的转换之后,再通过迭代器的方式返回结果集。迭代器的方式是符号JDBC接口规范的。
基于上述技术方案,本发明实施例提供的基于calcite的sql查询elasticsearch的实现方法,解析SQL语句,完成SQL至elasticsearch java API的适配和优化,支持最新的5.x版本的elasticsearch,且添加SQL schema与elasticsearch mapping的映射;即实现SQL语句查询elasticsearch数据,使得数据处理工程师可以在不了解elasticsearch的情况下,能使用数据库查询语言,通过类似数据库访问的手段来获取搜索引擎返回的数据。且能够整合查询结果集的样式,提高用户体验。
下面对本发明实施例提供的基于calcite的sql查询elasticsearch的实现系统进行介绍,下文描述的基于calcite的sql查询elasticsearch的实现系统与上文描述的基于calcite的sql查询elasticsearch的实现方法可相互对应参照。
请参考图3,图3为本发明实施例所提供的基于calcite的sql查询elasticsearch的实现系统的结构框图;该系统可以包括:
JDBC模块100,用于获取用户输入的SQL语句,并将SQL语句发送到calcite转换模块,并接收calcite转换模块返回的查询结果集;
calcite转换模块200,用于根据提供的元数据对接收到的SQL语句进行元数据验证;在验证通过后对SQL语句进行解析得到SQL语法树;利用附加规则将SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集。
具体的,JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。因此这里的JDBC模块可以是以JDBC客户端的形式展示。
基于上述技术方案,本发明实施例提的基于calcite的sql查询elasticsearch的实现系统,因为elasticsearch是使用Java语言开发的,包括其底层核心框架lucene也是用Java开发的。因此,利用JDBC访问elasticsearch数据。编写一个技术框架,提供Java API接口,实现SQL语句查询elasticsearch数据,使得数据处理工程师可以在不了解elasticsearch的情况下,能使用数据库查询语言,通过类似数据库访问的手段来获取搜索引擎返回的数据。
基于上述实施例,calcite转换模块200可以包括:
元数据提供单元,用于获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;通过覆写getTableMap()使calcite可通过表名找到Table实例;通过覆写Table类中的RelDataType getRowType(RelDataTypeFactorytypeFactory)以提供字段名称以及类型元数据。
基于上述任意实施例,calcite转换模块200可以包括:
过滤规则单元,用于将所述SQL语法树中第一符号翻译为elasticsearch中的rangeQuery;在SQL的模式匹配中,若模式串不以第二符号开头,则翻译为elasticsearch中的prefixQuery,否则翻译为elasticsearch中的wildcardQuery;将where子句中的和以及或逻辑,翻译为elasticsearch中的boolQuery;其中,所述第一符号为>、>=、<或<=;第二符号为_或%;
排序规则单元,用于将一个或多个字段进行升序或降序;
聚合规则单元,用于实现SQL聚合函数至elasticsearch聚合API的映射。
基于上述任意实施例,calcite转换模块200还可以包括:
转换单元,用于根据元数据的字段类型信息对elasticsearch返回的数据进行转换,并利用迭代器返回查询结果集。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的基于calcite的sql查询elasticsearch的实现方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (9)

1.一种基于calcite的sql查询elasticsearch的实现方法,其特征在于,包括:
获取输入的SQL语句;
根据提供的元数据对所述SQL语句进行元数据验证;
在验证通过后对所述SQL语句进行解析得到SQL语法树;
利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集。
2.根据权利要求1所述的实现方法,其特征在于,所述元数据的提供过程包括:
获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;
通过覆写getTableMap()使calcite可通过表名找到Table实例;
通过覆写Table类中的RelDataType getRowType(RelDataTypeFactory typeFactory)以提供字段名称以及类型元数据。
3.根据权利要求2所述的实现方法,其特征在于,所述附加规则包括:过滤规则、排序规则和聚合规则;其中,所述排序规则为一个或多个字段的升序或降序;所述聚合规则为实现SQL聚合函数至elasticsearch聚合API的映射。
4.根据权利要求3所述的实现方法,其特征在于,所述过滤规则具体为:
将所述SQL语法树中第一符号翻译为elasticsearch中的rangeQuery;
在SQL的模式匹配中,若模式串不以第二符号开头,则翻译为elasticsearch中的prefixQuery,否则翻译为elasticsearch中的wildcardQuery;
将where子句中的和以及或逻辑,翻译为elasticsearch中的boolQuery;
其中,所述第一符号为>、>=、<或<=;第二符号为_或%。
5.根据权利要求1-4任一项所述的实现方法,其特征在于,还包括:
根据所述元数据的字段类型信息对所述elasticsearch返回的数据进行转换,并利用迭代器返回查询结果集。
6.一种基于calcite的sql查询elasticsearch的实现系统,其特征在于,包括:
JDBC模块,用于获取用户输入的SQL语句,并将所述SQL语句发送到calcite转换模块,并接收所述calcite转换模块返回的查询结果集;
calcite转换模块,用于根据提供的元数据对接收到的所述SQL语句进行元数据验证;在验证通过后对所述SQL语句进行解析得到SQL语法树;利用附加规则将所述SQL语法树转换为elasticsearch可执行的匹配条件和查询执行动作,返回查询结果集。
7.根据权利要求6所述的实现系统,其特征在于,所述calcite转换模块,包括:
元数据提供单元,用于获取elasticsearch连接的相关信息,并创建ElasticsearchSchema实例以表征一个数据库对象;其中,ElasticsearchSchema初始化操作建立与elasticsearch服务器的连接;通过覆写getTableMap()使calcite可通过表名找到Table实例;通过覆写Table类中的RelDataType getRowType(RelDataTypeFactorytypeFactory)以提供字段名称以及类型元数据。
8.根据权利要求7所述的实现系统,其特征在于,所述calcite转换模块,包括:
过滤规则单元,用于将所述SQL语法树中第一符号翻译为elasticsearch中的rangeQuery;在SQL的模式匹配中,若模式串不以第二符号开头,则翻译为elasticsearch中的prefixQuery,否则翻译为elasticsearch中的wildcardQuery;将where子句中的和以及或逻辑,翻译为elasticsearch中的boolQuery;其中,所述第一符号为>、>=、<或<=;第二符号为_或%;
排序规则单元,用于将一个或多个字段进行升序或降序;
聚合规则单元,用于实现SQL聚合函数至elasticsearch聚合API的映射。
9.根据权利要求6-8任一项所述的实现系统,其特征在于,所述calcite转换模块,还包括:
转换单元,用于根据所述元数据的字段类型信息对所述elasticsearch返回的数据进行转换,并利用迭代器返回查询结果集。
CN201710194847.1A 2017-03-28 2017-03-28 一种查询elasticsearch的实现方法及系统 Active CN106934062B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710194847.1A CN106934062B (zh) 2017-03-28 2017-03-28 一种查询elasticsearch的实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710194847.1A CN106934062B (zh) 2017-03-28 2017-03-28 一种查询elasticsearch的实现方法及系统

Publications (2)

Publication Number Publication Date
CN106934062A true CN106934062A (zh) 2017-07-07
CN106934062B CN106934062B (zh) 2020-05-19

Family

ID=59425622

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710194847.1A Active CN106934062B (zh) 2017-03-28 2017-03-28 一种查询elasticsearch的实现方法及系统

Country Status (1)

Country Link
CN (1) CN106934062B (zh)

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368578A (zh) * 2017-07-20 2017-11-21 山东合天智汇信息技术有限公司 一种快速生成es查询语句的方法及系统
CN107463655A (zh) * 2017-07-27 2017-12-12 无锡雅座在线科技股份有限公司 查询数据的方法、装置和系统
CN108009296A (zh) * 2017-12-27 2018-05-08 北京中关村科金技术有限公司 一种基于Hbase的SQL查询方法、系统及相关装置
CN108182215A (zh) * 2017-12-22 2018-06-19 微梦创科网络科技(中国)有限公司 一种结构化查询语言sql性能统计的方法及装置
CN108388606A (zh) * 2018-02-06 2018-08-10 福建星瑞格软件有限公司 一种校验Sql语句中库表字段名的方法以及计算机设备
CN108520037A (zh) * 2018-03-30 2018-09-11 新华三大数据技术有限公司 数据查询方法、装置及数据可视化系统
CN108874924A (zh) * 2018-05-31 2018-11-23 康键信息技术(深圳)有限公司 搜索服务的创建方法、装置及计算机可读存储介质
CN109145009A (zh) * 2018-08-19 2019-01-04 杭州安恒信息技术股份有限公司 一种基于SQL检索ElasticSearch的方法
CN109299102A (zh) * 2018-10-23 2019-02-01 中国电子科技集团公司第二十八研究所 一种基于Elastcisearch的HBase二级索引系统及方法
CN109739882A (zh) * 2019-01-04 2019-05-10 南威软件股份有限公司 一种基于Presto和Elasticsearch的大数据查询优化方法
CN110020006A (zh) * 2017-07-27 2019-07-16 北京国双科技有限公司 查询语句的生成方法及相关设备
CN110175031A (zh) * 2019-04-25 2019-08-27 平安科技(深圳)有限公司 Sql语言转成dsl语言的方法、装置、计算机设备和存储介质
US20190266271A1 (en) * 2018-02-27 2019-08-29 Elasticsearch B.V. Systems and Methods for Converting and Resolving Structured Queries as Search Queries
CN110609945A (zh) * 2018-05-29 2019-12-24 优信拍(北京)信息科技有限公司 一种二手车业务数据的查询方法,装置及系统
CN110633292A (zh) * 2019-09-19 2019-12-31 上海依图网络科技有限公司 一种异构数据库的查询方法、装置、介质、设备及系统
CN110716954A (zh) * 2019-10-15 2020-01-21 北京搜狐新媒体信息技术有限公司 一种Elasticsearch数据查询方法及系统
CN110781212A (zh) * 2019-09-20 2020-02-11 成都四方伟业软件股份有限公司 一种sql高效计算和访问的方法、组件及系统
CN110851514A (zh) * 2019-10-17 2020-02-28 杭州安恒信息技术股份有限公司 基于flink的etl处理方法
CN111008212A (zh) * 2019-12-09 2020-04-14 国家电网有限公司客户服务中心 基于数据关联关系的检索路径分析与可视化系统及方法
CN111414378A (zh) * 2020-03-17 2020-07-14 用友网络科技股份有限公司 一种基于GraphQL的类元数据框架
CN111414438A (zh) * 2020-03-13 2020-07-14 上海银赛计算机科技有限公司 基于mysql的实时规则匹配方法及系统
CN111966727A (zh) * 2020-08-12 2020-11-20 北京海致网聚信息技术有限公司 基于Spark和Hive的分布式OLAP即席查询方法
CN112115150A (zh) * 2020-08-03 2020-12-22 上海金仕达软件科技有限公司 嵌入式内存数据库的数据管理方法、终端设备及介质
CN112199233A (zh) * 2020-10-16 2021-01-08 新华三信息安全技术有限公司 一种elasticsearch可视化数据的校验方法、装置及设备
US10891165B2 (en) 2019-04-12 2021-01-12 Elasticsearch B.V. Frozen indices
CN112328624A (zh) * 2020-11-06 2021-02-05 瀚高基础软件股份有限公司 一种sql转发方法、装置及可读存储介质
CN112463816A (zh) * 2020-11-23 2021-03-09 上海好屋网信息技术有限公司 基于api的查询系统及方法
CN112527976A (zh) * 2019-09-19 2021-03-19 北京国双科技有限公司 一种数据处理方法及装置
US10997204B2 (en) 2018-12-21 2021-05-04 Elasticsearch B.V. Cross cluster replication
CN112883048A (zh) * 2019-11-29 2021-06-01 阿里巴巴集团控股有限公司 一种数据访问方法、装置、服务器及可读存储介质
US11182093B2 (en) 2019-05-02 2021-11-23 Elasticsearch B.V. Index lifecycle management
CN114118055A (zh) * 2021-12-06 2022-03-01 中电万维信息技术有限责任公司 复杂sql语句优化解析方法
WO2022052639A1 (zh) * 2020-09-10 2022-03-17 北京达佳互联信息技术有限公司 数据查询方法及装置
US11431558B2 (en) 2019-04-09 2022-08-30 Elasticsearch B.V. Data shipper agent management and configuration systems and methods
US11461270B2 (en) 2018-10-31 2022-10-04 Elasticsearch B.V. Shard splitting
US11604674B2 (en) 2020-09-04 2023-03-14 Elasticsearch B.V. Systems and methods for detecting and filtering function calls within processes for malware behavior
US11914592B2 (en) 2018-02-27 2024-02-27 Elasticsearch B.V. Systems and methods for processing structured queries over clusters
US11943295B2 (en) 2019-04-09 2024-03-26 Elasticsearch B.V. Single bi-directional point of policy control, administration, interactive queries, and security protections

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399887A (zh) * 2013-07-19 2013-11-20 蓝盾信息安全技术股份有限公司 一种海量日志的查询与统计分析系统
US20160062555A1 (en) * 2014-09-03 2016-03-03 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
CN106202207A (zh) * 2016-06-28 2016-12-07 中国电子科技集团公司第二十八研究所 一种基于HBase‑ORM的索引及检索系统
CN106503079A (zh) * 2016-10-10 2017-03-15 语联网(武汉)信息技术有限公司 一种日志管理方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399887A (zh) * 2013-07-19 2013-11-20 蓝盾信息安全技术股份有限公司 一种海量日志的查询与统计分析系统
US20160062555A1 (en) * 2014-09-03 2016-03-03 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
CN106202207A (zh) * 2016-06-28 2016-12-07 中国电子科技集团公司第二十八研究所 一种基于HBase‑ORM的索引及检索系统
CN106503079A (zh) * 2016-10-10 2017-03-15 语联网(武汉)信息技术有限公司 一种日志管理方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
山水佳音: "基于Calcite Elasticsearch实现的SQL ON ES方案设想", 《HTTPS://BLOG.CSDN.NET/CHINA_WORLD/ARTICLE/DETAILS/51141072》 *

Cited By (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368578B (zh) * 2017-07-20 2020-05-12 山东合天智汇信息技术有限公司 一种快速生成es查询语句的方法及系统
CN107368578A (zh) * 2017-07-20 2017-11-21 山东合天智汇信息技术有限公司 一种快速生成es查询语句的方法及系统
CN107463655A (zh) * 2017-07-27 2017-12-12 无锡雅座在线科技股份有限公司 查询数据的方法、装置和系统
CN110020006B (zh) * 2017-07-27 2021-04-27 北京国双科技有限公司 查询语句的生成方法及相关设备
CN110020006A (zh) * 2017-07-27 2019-07-16 北京国双科技有限公司 查询语句的生成方法及相关设备
CN108182215A (zh) * 2017-12-22 2018-06-19 微梦创科网络科技(中国)有限公司 一种结构化查询语言sql性能统计的方法及装置
CN108182215B (zh) * 2017-12-22 2021-10-12 微梦创科网络科技(中国)有限公司 一种结构化查询语言sql性能统计的方法及装置
CN108009296A (zh) * 2017-12-27 2018-05-08 北京中关村科金技术有限公司 一种基于Hbase的SQL查询方法、系统及相关装置
CN108009296B (zh) * 2017-12-27 2020-10-16 北京中关村科金技术有限公司 一种基于Hbase的SQL查询方法、系统及相关装置
CN108388606A (zh) * 2018-02-06 2018-08-10 福建星瑞格软件有限公司 一种校验Sql语句中库表字段名的方法以及计算机设备
CN108388606B (zh) * 2018-02-06 2022-01-25 福建星瑞格软件有限公司 一种校验Sql语句中库表字段名的方法以及计算机设备
US20190266271A1 (en) * 2018-02-27 2019-08-29 Elasticsearch B.V. Systems and Methods for Converting and Resolving Structured Queries as Search Queries
US11914592B2 (en) 2018-02-27 2024-02-27 Elasticsearch B.V. Systems and methods for processing structured queries over clusters
US11188531B2 (en) * 2018-02-27 2021-11-30 Elasticsearch B.V. Systems and methods for converting and resolving structured queries as search queries
CN108520037B (zh) * 2018-03-30 2019-10-18 新华三大数据技术有限公司 数据查询方法、装置及数据可视化系统
CN108520037A (zh) * 2018-03-30 2018-09-11 新华三大数据技术有限公司 数据查询方法、装置及数据可视化系统
CN110609945A (zh) * 2018-05-29 2019-12-24 优信拍(北京)信息科技有限公司 一种二手车业务数据的查询方法,装置及系统
CN108874924A (zh) * 2018-05-31 2018-11-23 康键信息技术(深圳)有限公司 搜索服务的创建方法、装置及计算机可读存储介质
CN108874924B (zh) * 2018-05-31 2022-11-04 康键信息技术(深圳)有限公司 搜索服务的创建方法、装置及计算机可读存储介质
CN109145009B (zh) * 2018-08-19 2020-10-27 杭州安恒信息技术股份有限公司 一种基于SQL检索ElasticSearch的方法
CN109145009A (zh) * 2018-08-19 2019-01-04 杭州安恒信息技术股份有限公司 一种基于SQL检索ElasticSearch的方法
CN109299102A (zh) * 2018-10-23 2019-02-01 中国电子科技集团公司第二十八研究所 一种基于Elastcisearch的HBase二级索引系统及方法
CN109299102B (zh) * 2018-10-23 2020-11-13 中国电子科技集团公司第二十八研究所 一种基于Elastcisearch的HBase二级索引系统及方法
US11461270B2 (en) 2018-10-31 2022-10-04 Elasticsearch B.V. Shard splitting
US11580133B2 (en) 2018-12-21 2023-02-14 Elasticsearch B.V. Cross cluster replication
US10997204B2 (en) 2018-12-21 2021-05-04 Elasticsearch B.V. Cross cluster replication
CN109739882A (zh) * 2019-01-04 2019-05-10 南威软件股份有限公司 一种基于Presto和Elasticsearch的大数据查询优化方法
US11943295B2 (en) 2019-04-09 2024-03-26 Elasticsearch B.V. Single bi-directional point of policy control, administration, interactive queries, and security protections
US11431558B2 (en) 2019-04-09 2022-08-30 Elasticsearch B.V. Data shipper agent management and configuration systems and methods
US11556388B2 (en) 2019-04-12 2023-01-17 Elasticsearch B.V. Frozen indices
US10891165B2 (en) 2019-04-12 2021-01-12 Elasticsearch B.V. Frozen indices
CN110175031A (zh) * 2019-04-25 2019-08-27 平安科技(深圳)有限公司 Sql语言转成dsl语言的方法、装置、计算机设备和存储介质
CN110175031B (zh) * 2019-04-25 2023-08-18 平安科技(深圳)有限公司 Sql语言转成dsl语言的方法、装置、计算机设备和存储介质
US11182093B2 (en) 2019-05-02 2021-11-23 Elasticsearch B.V. Index lifecycle management
US11586374B2 (en) 2019-05-02 2023-02-21 Elasticsearch B.V. Index lifecycle management
CN112527976A (zh) * 2019-09-19 2021-03-19 北京国双科技有限公司 一种数据处理方法及装置
CN110633292A (zh) * 2019-09-19 2019-12-31 上海依图网络科技有限公司 一种异构数据库的查询方法、装置、介质、设备及系统
CN110633292B (zh) * 2019-09-19 2022-06-21 上海依图网络科技有限公司 一种异构数据库的查询方法、装置、介质、设备及系统
CN110781212A (zh) * 2019-09-20 2020-02-11 成都四方伟业软件股份有限公司 一种sql高效计算和访问的方法、组件及系统
CN110716954A (zh) * 2019-10-15 2020-01-21 北京搜狐新媒体信息技术有限公司 一种Elasticsearch数据查询方法及系统
CN110851514B (zh) * 2019-10-17 2022-10-21 杭州安恒信息技术股份有限公司 基于flink的etl处理方法
CN110851514A (zh) * 2019-10-17 2020-02-28 杭州安恒信息技术股份有限公司 基于flink的etl处理方法
CN112883048A (zh) * 2019-11-29 2021-06-01 阿里巴巴集团控股有限公司 一种数据访问方法、装置、服务器及可读存储介质
CN111008212A (zh) * 2019-12-09 2020-04-14 国家电网有限公司客户服务中心 基于数据关联关系的检索路径分析与可视化系统及方法
CN111414438B (zh) * 2020-03-13 2023-06-02 上海银赛计算机科技有限公司 基于mysql的实时规则匹配方法及系统
CN111414438A (zh) * 2020-03-13 2020-07-14 上海银赛计算机科技有限公司 基于mysql的实时规则匹配方法及系统
CN111414378A (zh) * 2020-03-17 2020-07-14 用友网络科技股份有限公司 一种基于GraphQL的类元数据框架
CN111414378B (zh) * 2020-03-17 2023-08-29 用友网络科技股份有限公司 一种基于GraphQL的类元数据框架
CN112115150A (zh) * 2020-08-03 2020-12-22 上海金仕达软件科技有限公司 嵌入式内存数据库的数据管理方法、终端设备及介质
CN112115150B (zh) * 2020-08-03 2024-03-19 上海金仕达软件科技股份有限公司 嵌入式内存数据库的数据管理方法、终端设备及介质
CN111966727A (zh) * 2020-08-12 2020-11-20 北京海致网聚信息技术有限公司 基于Spark和Hive的分布式OLAP即席查询方法
US11604674B2 (en) 2020-09-04 2023-03-14 Elasticsearch B.V. Systems and methods for detecting and filtering function calls within processes for malware behavior
WO2022052639A1 (zh) * 2020-09-10 2022-03-17 北京达佳互联信息技术有限公司 数据查询方法及装置
CN112199233B (zh) * 2020-10-16 2022-08-26 新华三信息安全技术有限公司 一种elasticsearch可视化数据的校验方法、装置及设备
CN112199233A (zh) * 2020-10-16 2021-01-08 新华三信息安全技术有限公司 一种elasticsearch可视化数据的校验方法、装置及设备
CN112328624A (zh) * 2020-11-06 2021-02-05 瀚高基础软件股份有限公司 一种sql转发方法、装置及可读存储介质
CN112463816A (zh) * 2020-11-23 2021-03-09 上海好屋网信息技术有限公司 基于api的查询系统及方法
CN114118055A (zh) * 2021-12-06 2022-03-01 中电万维信息技术有限责任公司 复杂sql语句优化解析方法

Also Published As

Publication number Publication date
CN106934062B (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN106934062A (zh) 一种查询elasticsearch的实现方法及系统
Simitsis et al. State-space optimization of ETL workflows
US7882146B2 (en) XML schema collection objects and corresponding systems and methods
CN107515887B (zh) 一种适用于多种大数据管理系统的交互式查询方法
US8387030B2 (en) Service adaptation definition language
US8726229B2 (en) Multi-language support for service adaptation
US20070061318A1 (en) System and method of data source agnostic querying
Dodds et al. Linked data patterns
US8458200B2 (en) Processing query conditions having filtered fields within a data abstraction environment
CN110019314B (zh) 基于数据项分析的动态数据封装方法、客户端和服务端
CN107491476B (zh) 一种适用于多种大数据管理系统的数据模型转换及查询分析方法
US20080016048A1 (en) Intelligent condition pruning for size minimization of dynamic, just in time tables
de la Vega et al. Mortadelo: Automatic generation of NoSQL stores from platform-independent data models
US20060122973A1 (en) Mechanism for defining queries in terms of data objects
US9031924B2 (en) Query conditions having filtered fields within a data abstraction environment
US9053207B2 (en) Adaptive query expression builder for an on-demand data service
Alonso et al. Towards a polyglot data access layer for a low-code application development platform
US10831784B2 (en) Integration of relational calculation views into a relational engine
Fuentes‐Lorenzo et al. A RESTful and semantic framework for data integration
May et al. A uniform framework for integration of information from the web
WO2001093599A2 (en) Method and apparatus for unified query interface for network information
Zhang et al. An open framework for semantic code queries on heterogeneous repositories
Di Ruscio et al. A data-modelling approach to web application synthesis
Swathi et al. SPARQL for semantic information retrieval from RDF knowledge base
CN1588371A (zh) 包装器的生成方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant