CN115033312B - ElasticSearch数据操作方法及装置 - Google Patents
ElasticSearch数据操作方法及装置 Download PDFInfo
- Publication number
- CN115033312B CN115033312B CN202210947847.5A CN202210947847A CN115033312B CN 115033312 B CN115033312 B CN 115033312B CN 202210947847 A CN202210947847 A CN 202210947847A CN 115033312 B CN115033312 B CN 115033312B
- Authority
- CN
- China
- Prior art keywords
- data operation
- annotation information
- elasticsearch
- operation interface
- interface
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本发明涉及分布式数据存储技术领域,提供一种ElasticSearch数据操作方法及装置,其方法包括:响应于数据操作接口下的操作请求,获取输入实参;基于简化框架,应用输入实参,执行数据操作接口对应的ES调用流程,以完成操作请求对应的数据操作;ES调用流程是基于简化框架,应用数据操作接口的注解信息,输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息确定的;实体类是基于输入形参和/或数据操作接口对应的输出形参确定的,实现了仅需构建数据操作接口和实体类,并标注注解信息,便可以完成对ES数据操作,降低了ES数据操作的使用门槛,并降低了后续ES搜索业务的开发和维护的难度。
Description
技术领域
本发明涉及分布式数据存储技术领域,尤其涉及一种ElasticSearch数据操作方法及装置。
背景技术
目前,在JAVA中调用ElasticSearch(以下简称ES)只有通过官方提供的客户端操作接口进行数据操作。
但官方客户端操作接口的使用相对复杂,使用门槛较高,不利于普通开发者快速搭建基于ES的搜索业务,同时在对ES搜索业务开发过程中,进行编写代码时编码风格不统一,从而导致后续ES搜索业务的开发和维护比较困难。
发明内容
本发明提供一种ElasticSearch数据操作方法及装置,用以解决现有技术中ElasticSearch客户端操作接口使用复杂且编码风格不统一导致维护困难的缺陷。
本发明提供一种ElasticSearch数据操作方法,包括:
响应于数据操作接口下的操作请求,获取所述数据操作接口对应的输入实参;
基于简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程,以完成所述操作请求对应的数据操作;
所述ElasticSearch调用流程是所述简化框架基于所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态构建的;所述实体类是基于所述输入形参和/或所述数据操作接口对应的输出形参确定的。
根据本发明提供的一种ElasticSearch数据操作方法,所述简化框架包括扫描模块和动态代理模块;
所述ElasticSearch调用流程的动态构建步骤如下,包括:
在所述简化框架所在项目启动运行的情况下,基于所述扫描模块,扫描得到所述数据操作接口;并基于所述动态代理模块,应用扫描得到的所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息,动态构建所述ElasticSearch调用流程,并将所述ElasticSearch调用流程注入到所述简化框架上下文中。
根据本发明提供的一种ElasticSearch数据操作方法,所述所述基于所述动态代理模块,应用扫描得到的所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息,动态构建所述ElasticSearch调用流程,包括:
基于所述输入形参或者基于所述输入形参和所述输出形参,确定所述实体类;
基于所述简化框架中的ES翻译函数,应用所述数据操作接口的注解信息,所述输入形参,所述输入形参的注解信息,以及所述实体类的注解信息,确定所述数据操作接口对应ElasticSearch操作请求接口和操作命令;
基于所述ElasticSearch操作请求接口和所述操作命令,构建所述ElasticSearch调用流程。
根据本发明提供的一种ElasticSearch数据操作方法,所述基于所述简化框架中的ES翻译函数,应用所述数据操作接口的注解信息,所述输入形参,所述输入形参的注解信息,以及所述实体类的注解信息,确定所述数据操作接口对应ElasticSearch操作请求接口和操作命令,包括:
基于所述输入形参,应用反射机制,确定所述输入形参对应的ElasticSearch形参;
基于所述输入形参的注解信息,确定所述数据操作接口对应的查询构建器,并基于所述实体类的注解信息,确定所述数据操作接口对应的分词器;
基于所述数据操作接口的注解信息中的数据操作类型、所述ElasticSearch形参、所述数据操作接口对应的查询构建器和所述数据操作接口对应的分词器,确定所述数据操作接口对应ElasticSearch操作请求接口和操作命令。
根据本发明提供的一种ElasticSearch数据操作方法,所述基于所述ElasticSearch操作请求接口和所述操作命令,构建所述ElasticSearch调用流程,包括:
若所述数据操作接口中包括所述输出形参,则基于所述动态代理模块,应用所述ElasticSearch操作请求接口、所述操作命令和输出封装流程,构建所述ElasticSearch调用流程;所述输出封装流程包括将所述ElasticSearch操作请求接口执行所述操作命令的请求结果封装成所述输出形参的类型格式;
否则基于所述动态代理模块中的流程构建函数,应用所述ElasticSearch操作请求接口和所述操作命令,构建所述ElasticSearch调用流程。
根据本发明提供的一种ElasticSearch数据操作方法,所述数据操作接口的注解信息包括数据操作类型和输出形参类型;所述输入形参的注解信息包括查询条件注解和/或查询排序注解;所述查询条件注解包括数据字段名、查询条件类型、条件必要类型、查询类型、范围类型和是否分组标签;所述查询排序注解包括数据字段名和排序类型;所述实体类的注解信息包括类注解信息和字段注解信息;类注解信息包括索引名;所述字段注解信息包括分词器类型和字段别名。
根据本发明提供的一种ElasticSearch数据操作方法,所述基于简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程,包括:
在当前监听状态为正常的情况下,基于所述简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程;所述当前监听状态是基于所述动态代理模块中的监听函数,对ElasticSearch服务端进行实时监听得到的。
本发明还提供一种ElasticSearch数据操作装置,包括:
响应模块,用于响应于数据操作接口下的操作请求,获取所述数据操作接口对应的输入实参;
执行模块,用于基于简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程,以完成所述操作请求对应的数据操作;
所述ElasticSearch调用流程是所述简化框架基于所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态构建的;所述实体类是基于所述输入形参和/或所述数据操作接口对应的输出形参确定的。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述ElasticSearch数据操作方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述ElasticSearch数据操作方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述ElasticSearch数据操作方法。
本发明提供的ElasticSearch数据操作方法及装置,通过应用简化框架应用数据接口信息的注解信息、数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态创建数据操作接口对应的ElasticSearch调用流程,实现了用户仅需要构建数据操作接口和实体类,根据简化框架的要求标注注解信息,便可以完成对ElasticSearch数据操作,降低了ElasticSearch数据操作的使用门槛,并且通过注解形式简化了调用流程,规范了在不同开发人员手中的代码规范,降低了后续ES搜索业务的开发和维护的难度。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的ElasticSearch数据操作方法的流程示意图;
图2是本发明提供的ElasticSearch调用流程的动态构建方法的流程示意图;
图3是本发明提供的ElasticSearch操作接口和操作命令确定方法的流程示意图;
图4是本发明提供的ElasticSearch数据操作装置的结构示意图;
图5是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图和实施例对本发明的实施方式做进一步详细描述。以下实施例用于说明本发明,但不能用来限制本发明的范围。
在本发明实施例的描述中,需要说明的是,术语“上”、“下”、“前”、“后”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明实施例和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明实施例的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明实施例的描述中,需要说明的是,除非另有明确的规定和限定,术语“类”和“类对象”,“父类”和“子类”与面向对象中的解释相同,“类对象”是“类”的实例,“类对象”通过“类”的实例化得到,例如:A类对象为A类的实例。术语“父类”和“子类”与面向对象中的解释相同。
目前,ES的官方客户端操作接口的使用相对复杂,使用门槛较高,已查询操作为例,需要先构建SearchRequest对象,然后构建SearchSourceBuilder对象和MatchQueryBuilder对象,然后将MatchQueryBuilder对象设置到SearchSourceBuilder对象中,并将SearchSourceBuilder对象设置到SearchRequest对象中,然后将SearchRequest对象作为请求内容发送到ES的服务端进行请求。其操作相对复杂,需要开发人员熟悉ES的官方客户端操作接口的使用文档,使用门槛较高,不利于普通开发人员快速搭建基于ES的搜索业务,同时由于操作复杂,在开发过程中容易产生编码风格不统一的情况,从而导致后续ES搜索业务的开发和维护比较困难。
因此,如何简化调用ES的数据操作并统一编码风格是本领域亟待解决的技术问题。
针对上述技术问题,本发明实施例提供了一种ElasticSearch数据操作方法。图1是本发明提供的ElasticSearch数据操作方法的流程示意图。如图1所示,该方法,包括:
步骤110,响应于数据操作接口下的操作请求,获取数据操作接口对应的输入实参;
步骤120,基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程,以完成操作请求对应的数据操作;
ElasticSearch调用流程是简化框架基于数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息动态构建的;实体类是基于输入形参和/或数据操作接口对应的输出形参确定的。
考虑到ElasticSearch操作请求接口调用较为复杂,普通开发者无法快速搭建基于ES的搜索业务,导致开发成本高,因此,本发明实施例提供了一种简化框架,该简化框架是基于Spring框架构建,该简化框架应用数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态构建ElasticSearch调用流程,并在数据接口被请求时执行ElasticSearch调用流程,实现了开发人员仅需要少量开发工作,便可以完成ElasticSearch的数据操作。
具体地,在简化框架所在项目启动运行后,简化框架会根据数据接口信息的注解信息、数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态创建ElasticSearch调用流程,并注入到简化框架的上下文中。之后实时等待数据操作请求,当响应数据操作接口下对应的操作请求后,解析操作请求中携带的参数,得到数据操作接口对应的输入实参,并将输入实参输入到数据操作接口中,简化框架会调用该数据操作接口对应的ElasticSearch调用流程,以完成该操作请求对应的数据请求。其中,实体类是基于输入形参和/或数据操作接口对应的输出形参确定的。
需要说明的是,数据操作接口是由开发人员对简化框架所在项目进行开发时创建,可以有多个,并且数据操作接口会对应一个数据操作事件,当数据操作事件被触发时,响应所述数据操作事件对应的数据接口下的操作请求。数据操作接口可以通过简化框架提供的接口设置方法设置到简化框架中,以供简化框架进行后续操作,还可以在简化框架所在项目启动时简化框架扫描获取得到,本发明实施例对此不作限制,当以扫描方式获得数据接口的情景下,可以扫描Spring框架application.yml配置中的bean部分获取。动态代理可以是JDK动态代理和CGLIB动态代理,本发明实施例对此不作限制。实体类也是由开发人员对简化框架所在项目进行开发时根据ElasticSearch中各索引对应的数据结构创建,并且建立实体类和数据操作接口的输入形参和/或输出形参的映射关系,即简化框架可以根据该映射关系从数据操作接口的输入形参和/或输出形参获取数据操作接口对应的实体类。
此外数据接口信息的注解信息可以包括操作类型、所述接口对应的索引名或者数据接口输出形参的类型等,输入形参的注解信息可以包括输入形参对应的ElasticSearch中索引对应数据字段名、查询类型或者排序类型等,实体类的注解信息可以包括实体类对应的索引名,实体类中各数据字段的注解可以包括分类器或者数据字段别名等,本发明实施例对此不作限制。ElasticSearch调用流程可以使用动态代理,通过动态代理来实现数据操作接口对应的数据操作方法,具体地可以是根据注解信息中的操作类型确定ElasticSearch操作请求接口,根据输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息构建ElasticSearch的操作命令,并根据ElasticSearch操作请求接口和操作命令动态构建ElasticSearch调用流程。其中,动态构建表示的在项目运行时构建,而不是在编码阶段构建。
另一方面,简化框架所在项目是基于springboot的start形式存在,简化框架的运行依赖Spring包和ElasticSearch包,需要在pom.xml中设置,同时需要在Spring的配置文件application.yml配置ElasticSearch服务端的连接信息,包括:HTTP地址和端口号,以及ES存放接口的路径。
本发明实施例提供的ElasticSearch数据操作方法,通过应用简化框架应用数据接口信息的注解信息、数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态创建数据操作接口对应的ElasticSearch调用流程,实现了用户仅需要构建数据操作接口和实体类,根据简化框架的要求标注注解信息,便可以完成对ElasticSearch数据操作,降低了ElasticSearch数据操作的使用门槛,并且通过注解形式简化了调用流程,规范了在不同开发人员手中的代码规范,降低了后续ES搜索业务的开发和维护的难度。
基于上述任一实施例,ElasticSearch调用流程的动态构建步骤如下,包括:
在简化框架所在项目启动运行的情况下,基于扫描模块,扫描得到数据操作接口;并基于动态代理模块,应用扫描得到的数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息,动态构建ElasticSearch调用流程,并将ElasticSearch调用流程注入到所述简化框架上下文中。
考虑到如果在简化框架中提供设置操作接口的设置函数,需要通过硬编码的方式将定义的数据操作接口名设置到简化框架中,当数据操作接口有多个时不便于维护,当出现数据操作接口需要进行编码并重新编译整个项目,并重新发布版本,增加了不必要的开发工作。因此,本发明实施例通过扫描的方式获得数据操作接口,降低了开发和维护成本,并且可以灵活配置。
具体地,简化框架包括扫描模块和动态代理模块,当简化框架所在项目启动运行时,会先启动简化框架,然后在启动项目中的其他部分。简化框架启动时,扫描模块会扫描得到数据操作接口,动态代理模块应用扫描得到的数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息,动态构建ElasticSearch调用流程,并将构建完成的ElasticSearch调用流程注入到简化框架上下文中。
需要说明的是,扫描模块可以扫描Spring框架application.yml配置中的bean部分获取数据操作接口名,并通过反射机制获取数据操作接口名对应的数据操作接口的输入形参和/或输出形参,以及数据操作接口的注解信息、输入形参的注解信息和数据操作接口对应的实体类的注解信息。
基于上述实施例,图2是本发明提供的ElasticSearch调用流程的动态构建方法的流程示意图。如图2所示,基于动态代理模块,应用扫描得到的数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息,动态构建ElasticSearch调用流程,包括:
步骤210,基于输入形参或者基于输入形参和输出形参,确定实体类;
步骤220,基于简化框架中的ES翻译函数,应用数据操作接口的注解信息,输入形参,输入形参的注解信息,以及实体类的注解信息,确定数据操作接口对应ElasticSearch操作请求接口和操作命令;
步骤230,基于ElasticSearch操作请求接口和操作命令,构建ElasticSearch调用流程。
具体地,动态代理模块根据输入形参或者根据输入形参和输出形参,应用实体类和数据操作接口的输入形参和/或输出形参之间的映射关系,确定数据操作接口对应的实体类,并调用简化框架中的ES翻译函数,通过反射机制获取数据操作接口的注解信息,输入形参,输入形参的注解信息,以及实体类的注解信息,并根据数据操作接口的注解信息,输入形参,输入形参的注解信息,以及实体类的注解信息,确定数据操作接口对应ElasticSearch操作请求接口和操作命令,再根据数据操作接口对应ElasticSearch操作请求接口和操作命令,构建数据操作接口对应ElasticSearch调用流程。
需要说明的是,ES翻译函数可以根据输入形参的注解信息确定输入形参在ElasticSearch中对应的数据字段,还可以通过反射机制确定输入形参在ElasticSearch中对应的数据字段,又或者可以当输入形参的注解信息中包含ElasticSearch中对应的数据字段名时使用注解中的数据字段名,否则通过反射机制确定输入形参在ElasticSearch中对应的数据字段,本发明实施例对此不作限制。同时ES翻译函数可以根据输入形参的注解信息,确定该数据操作接口对应的数据检索条件,例如:排序、聚类或者检索范围等,可以根据实体类的注解信息,确定该数据接口对应的ElasticSearch索引,以及实体类中的数据字段是否分词,本发明实施例对此不作限制。ES翻译函数可以根据输入形参的注解信息、实体类的注解信息和输入形参以对应的查询构建器进行封装,得到操作命令,可以根据数据操作接口的注解信息得到ElasticSearch操作请求接口,ElasticSearch操作请求接口执行操作命令实现了ElasticSearch的调用流程。本发明包括但不限制如下例子:以数据操作接口的注解信息表示为查询为例子,数据操作接口对应的实体类的注解中索引名为testIndex,ES翻译函数可以将数据操作接口的注解信息翻译成ElasticSearch操作请求接口search,可以根据输入形参的注解信息和输入形参可以翻译成TermQueryBuilder、SortQueryBuilder和RangeQueryBuilder等查询构建器,如:输入形参stringstrTestName,其注解中查询类型为是TearmQuery,在ElasticSearch中对应的字段为TestName,则该输入形参可以被ES翻译函数翻译成TermQueryBuilder termBuilder =QueryBuilders.termQuery("TestName", strTestName)。查询构建器即为其对应的输入参数的操作命令。在实际运行时,当输入形参string strTestName="Test"时,则会以TestName等于Test进行查询。然后ES翻译函数根据输入形参的注解中的必要性类型(must或者should)和输入形参所对应的查询构建器组装成操作命令,并通过ElasticSearch操作请求接口调用,以构建ElastricSearch调用流程如:
SearchRequest searchRequest = new SearchRequest("testIndex");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.boolQuery().must(termQueryBuilder).should(rangeQueryBuilder));
searchRequest.source(sourceBuilder);
SearchResponse response = client.search(searchRequest,RequestOptions.DEFAULT);
基于上述实施例,图3是本发明提供的ElasticSearch操作请求接口和操作命令确定方法的流程示意图。如图3所示,步骤220,包括:
步骤221,基于输入形参,应用反射机制,确定输入形参对应的ElasticSearch形参;
步骤222,基于输入形参的注解信息,确定数据操作接口对应的查询构建器,并基于实体类的注解信息,确定数据操作接口对应的分词器;
步骤223,基于数据操作接口的注解信息中的数据操作类型、ElasticSearch形参、数据操作接口对应的查询构建器和数据操作接口对应的分词器,确定数据操作接口对应ElasticSearch操作请求接口和操作命令。
具体地,数据操作接口的注解信息中至少包括数据操作类型,数据操作接口的输入形参,根据反射机制,获取输入形参的参数名,并根据该数据操作接口输入形参的参数名生成该数据操作接口对应的ElasticSearch形参,根据数据操作接口的输入形参中各形参的注解信息中的查询条件注解,确定数据操作接口对应的查询构建器,并根据数据操作接口对应的实体类的数据字段注解的分词器类别,则确定该数据操作接口对应的分词器,并根据数据操作接口输入形参的注解信息中的必要性类别(must/should)、数据操作接口对应的查询构建器和数据操作接口对应的分词器组确定各自的操作命令,并根据数据操作接口的注解信息,确定ElasticSearch操作请求接口。其中,当实体类中的字段注解的分词器类别为空时,则不使用分词器。
基于上述实施例,步骤230,包括:
若数据操作接口中包括输出形参,则基于动态代理模块,应用ElasticSearch操作请求接口、操作命令和输出封装流程,构建ElasticSearch调用流程;输出封装流程包括将ElasticSearch操作请求接口执行操作命令的请求结果封装成输出形参的类型格式;
否则基于动态代理模块,应用ElasticSearch操作请求接口和操作命令,构建ElasticSearch调用流程。
考虑到数据操作会得到操作结果,若直接将操作结果返回,则需要用户进行解析,会出现重复开发工作,导致开发成本变高。同时考虑到ElasticSearch数据操作的操作结果是具有一定格式的内容,例如:JSON格式或者XML格式,因此,本发明实施例将操作结果封装成输出形参的类型格式,这样用户则可以直接定义输出形参的类型格式,并通过输出形参的类型格式直接读取操作结果,无需再进行解析,减少了重复性开发工作,降低了开发成本。
具体地,在数据操作接口中包括输出形参的场景下,表示需要应用输出形参的类型格式返回数据操作结果,因此需要应用ElasticSearch操作请求接口、操作命令和输出封装流程,构建ElasticSearch调用流程,否则应用ElasticSearch操作请求接口和操作命令,构建ElasticSearch调用流程。其中,封装流程是将ElasticSearch操作请求接口执行操作命令的请求结果封装成输出形参的类型格式。
需要说明的是,可以根据反射机制获取输出形参中字段名,并依据字段名和结果信息中的字段名之间的映射关系对操作结果进行封装,还可以根据输出形参的注解信息和结果信息中的字段名之间的映射关系进行封装,本发明实施例对此不作限制。其中,映射关系可以是根据查询数据的字段名确定。
基于上述实施例,本发明提供一优选实施例,该实施例中,数据操作接口的注解信息包括数据操作类型和输出形参类型;输入形参的注解信息包括查询条件注解和/或查询排序注解;查询条件注解包括数据字段名、查询条件类型、条件必要类型、查询类型、范围类型和是否分组标签;查询排序注解包括数据字段名和排序类型;实体类的注解信息包括类注解信息和字段注解信息;类注解信息包括索引名;字段注解信息包括分词器类型和字段别名。
需要说明的是,数据操作类型至少包括数据的增删改查类型,输出形参类型标识输出形参的类型格式,查询条件类型包括过滤方式还是查询方式,条件必要类型表示must/should,查询类型标识term/math/range,范围类型表示查询字段的范围区间,排序类型表示DESC/AES,索引名表示实体类在ElasticSearch中对应的索引,分词器类型表示实体类中的数据字段所使用的分词类型,字段注解信息中的字段别名表示当实体类中的字段与实体类在ElaticSearch中的对应索引中的字段名不一致时应用字段别名表示ElaticSearch中的对应索引中的字段名。
基于上述实施例,步骤120,包括:
在当前监听状态为正常的情况下,基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程;当前监听状态是基于动态代理模块中的监听函数,对ElasticSearch服务端进行实时监听得到的。
考虑到当ElasticSearch服务端出现异常时,会出现向ElasticSearch服务端请求执行数据操作命令后,很久才响应返回异常信息的情况,导致用户体验感不高,因此,本发明实施例通过动态代理模块中的监听函数对ElasticSearch服务端以心跳的方式进行实时监听,以确定ElasticSearch服务端的当前监听状态,并且在当前监听状态为正常的情况下,基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程,否则执行默认操作,即返回默认结果,实现了在ElasticSearch服务端的当前监听状态异常时候,通过默认结果提示用户,提高了用户体验。
下面对本发明提供的ElasticSearch数据操作装置进行描述,下文描述的ElasticSearch数据操作装置与上文描述的ElasticSearch数据操作方法可相互对应参照。
图4是本发明提供的ElasticSearch数据操作装置的结构示意图。如图4所示,该装置包括:响应模块410和执行模块420。
其中,
响应模块410,用于响应于数据操作接口下的操作请求,获取数据操作接口对应的输入实参;
执行模块420,用于基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程,以完成操作请求对应的数据操作;
ElasticSearch调用流程是简化框架基于数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息动态构建的;实体类是基于输入形参和/或数据操作接口对应的输出形参确定的。
本发明实施例提供的ElasticSearch数据操作装置,通过响应模块,用于响应于数据操作接口下的操作请求,获取数据操作接口对应的输入实参;执行模块,用于基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程,以完成操作请求对应的数据操作;ElasticSearch调用流程是简化框架基于数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息动态构建的;实体类是基于输入形参和/或数据操作接口对应的输出形参确定的,实现了用户仅需要构建数据操作接口和实体类,根据简化框架的要求标注注解信息,便可以完成对ElasticSearch数据操作,降低了ElasticSearch数据操作的使用门槛,并且通过注解形式简化了调用流程,规范了在不同开发人员手中的代码规范,降低了后续ES搜索业务的开发和维护的难度。
基于上述任一实施例,该ElasticSearch数据操作装置,还包括:动态构建模块,用于在简化框架所在项目启动运行的情况下,基于扫描模块,扫描得到数据操作接口;并基于动态代理模块,应用扫描得到的数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息,动态构建ElasticSearch调用流程,并将ElasticSearch调用流程注入到简化框架上下文中。
基于上述任一实施例,动态构建模块,包括:
实体类确定子模块,用于基于输入形参或者基于输入形参和输出形参,确定实体类;
翻译子模块,用于基于简化框架中的ES翻译函数,应用数据操作接口的注解信息,输入形参,输入形参的注解信息,以及实体类的注解信息,确定数据操作接口对应ElasticSearch操作请求接口和操作命令;
调用流程构建子模块,用于基于ElasticSearch操作请求接口和操作命令,构建ElasticSearch调用流程。
基于上述任一实施例,翻译子模块,包括:
入参翻译子模块,用于基于输入形参,应用反射机制,确定输入形参对应的ElasticSearch形参;
查询条件翻译子模块,用于基于输入形参的注解信息,确定数据操作接口对应的查询构建器,并基于实体类的注解信息,确定数据操作接口对应的分词器;
ElasticSearch操作确定子模块,用于基于数据操作接口的注解信息中的数据操作类型、ElasticSearch形参、数据操作接口对应的查询构建器和数据操作接口对应的分词器,确定数据操作接口对应ElasticSearch操作请求接口和操作命令。
基于上述任一实施例,调用流程构建子模块,还用于若数据操作接口中包括输出形参,则基于动态代理模块,应用ElasticSearch操作请求接口、操作命令和输出封装流程,构建ElasticSearch调用流程;输出封装流程包括将ElasticSearch操作请求接口执行操作命令的请求结果封装成输出形参的类型格式;
否则基于动态代理模块中的流程构建函数,应用ElasticSearch操作请求接口和操作命令,构建ElasticSearch调用流程。
基于上述任一实施例,执行模块420,具体用于在当前监听状态为正常的情况下,基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程;当前监听状态是基于动态代理模块中的监听函数,对ElasticSearch服务端进行实时监听得到的。
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行ElasticSearch数据操作方法,该方法包括:响应于数据操作接口下的操作请求,获取数据操作接口对应的输入实参;基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程,以完成操作请求对应的数据操作;ElasticSearch调用流程是简化框架基于数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息动态构建的;实体类是基于输入形参和/或数据操作接口对应的输出形参确定的。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的ElasticSearch数据操作方法,该方法包括:响应于数据操作接口下的操作请求,获取数据操作接口对应的输入实参;基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程,以完成操作请求对应的数据操作;ElasticSearch调用流程是简化框架基于数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息动态构建的;实体类是基于输入形参和/或数据操作接口对应的输出形参确定的。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的ElasticSearch数据操作方法,该方法包括:响应于数据操作接口下的操作请求,获取数据操作接口对应的输入实参;基于简化框架,应用输入实参,执行数据操作接口对应的ElasticSearch调用流程,以完成操作请求对应的数据操作;ElasticSearch调用流程是简化框架基于数据操作接口的注解信息,数据操作接口对应的输入形参,输入形参的注解信息,以及数据操作接口对应实体类的注解信息动态构建的;实体类是基于输入形参和/或数据操作接口对应的输出形参确定的。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种ElasticSearch数据操作方法,其特征在于,包括:
响应于数据操作接口下的操作请求,获取所述数据操作接口对应的输入实参;
基于简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程,以完成所述操作请求对应的数据操作;
所述ElasticSearch调用流程是所述简化框架基于所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态构建的;所述实体类是基于所述输入形参和/或所述数据操作接口对应的输出形参确定的;
所述简化框架包括扫描模块和动态代理模块;
所述ElasticSearch调用流程的动态构建步骤如下,包括:
在所述简化框架所在项目启动运行的情况下,基于所述扫描模块,扫描得到所述数据操作接口;并基于所述动态代理模块,应用扫描得到的所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息,动态构建所述ElasticSearch调用流程,并将所述ElasticSearch调用流程注入到所述简化框架上下文中;
所述基于所述动态代理模块,应用扫描得到的所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息,动态构建所述ElasticSearch调用流程,包括:
基于所述输入形参或者基于所述输入形参和所述输出形参,确定所述实体类;
基于所述简化框架中的ES翻译函数,应用所述数据操作接口的注解信息,所述输入形参,所述输入形参的注解信息,以及所述实体类的注解信息,确定所述数据操作接口对应ElasticSearch操作请求接口和操作命令;
基于所述ElasticSearch操作请求接口和所述操作命令,构建所述ElasticSearch调用流程;
所述基于所述简化框架中的ES翻译函数,应用所述数据操作接口的注解信息,所述输入形参,所述输入形参的注解信息,以及所述实体类的注解信息,确定所述数据操作接口对应ElasticSearch操作请求接口和操作命令,包括:
基于所述数据操作接口的注解信息,确定所述数据操作接口对应的ElasticSearch操作请求接口;
将所述输入形参的注解信息、所述实体类的注解信息和所述输入形参以对应的查询构建器进行封装,并将封装得到的查询构建器和所述输入形参的注解信息中的必要性类型进行组装,得到所述数据操作接口对应的ElasticSearch操作命令。
2.根据权利要求1所述的ElasticSearch数据操作方法,其特征在于,所述基于所述ElasticSearch操作请求接口和所述操作命令,构建所述ElasticSearch调用流程,包括:
若所述数据操作接口中包括所述输出形参,则基于所述动态代理模块,应用所述ElasticSearch操作请求接口、所述操作命令和输出封装流程,构建所述ElasticSearch调用流程;所述输出封装流程包括将所述ElasticSearch操作请求接口执行所述操作命令的请求结果封装成所述输出形参的类型格式;
否则基于所述动态代理模块中的流程构建函数,应用所述ElasticSearch操作请求接口和所述操作命令,构建所述ElasticSearch调用流程。
3.根据权利要求1或2所述的ElasticSearch数据操作方法,其特征在于,所述数据操作接口的注解信息包括数据操作类型和输出形参类型;所述输入形参的注解信息包括查询条件注解和/或查询排序注解;所述查询条件注解包括数据字段名、查询条件类型、条件必要类型、查询类型、范围类型和是否分组标签;所述查询排序注解包括数据字段名和排序类型;所述实体类的注解信息包括类注解信息和字段注解信息;类注解信息包括索引名;所述字段注解信息包括分词器类型和字段别名。
4.根据权利要求2所述的ElasticSearch数据操作方法,其特征在于,所述基于简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程,包括:
在当前监听状态为正常的情况下,基于所述简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程;所述当前监听状态是基于所述动态代理模块中的监听函数,对ElasticSearch服务端进行实时监听得到的。
5.一种ElasticSearch数据操作装置,其特征在于,包括:
响应模块,用于响应于数据操作接口下的操作请求,获取所述数据操作接口对应的输入实参;
执行模块,用于基于简化框架,应用所述输入实参,执行所述数据操作接口对应的ElasticSearch调用流程,以完成所述操作请求对应的数据操作;
所述ElasticSearch调用流程是所述简化框架基于所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息动态构建的;所述实体类是基于所述输入形参和/或所述数据操作接口对应的输出形参确定的;
所述简化框架包括扫描模块和动态代理模块;
所述ElasticSearch调用流程的动态构建步骤如下,包括:
在所述简化框架所在项目启动运行的情况下,基于所述扫描模块,扫描得到所述数据操作接口;并基于所述动态代理模块,应用扫描得到的所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息,动态构建所述ElasticSearch调用流程,并将所述ElasticSearch调用流程注入到所述简化框架上下文中;
所述基于所述动态代理模块,应用扫描得到的所述数据操作接口的注解信息,所述数据操作接口对应的输入形参,所述输入形参的注解信息,以及所述数据操作接口对应实体类的注解信息,动态构建所述ElasticSearch调用流程,包括:
基于所述输入形参或者基于所述输入形参和所述输出形参,确定所述实体类;
基于所述简化框架中的ES翻译函数,应用所述数据操作接口的注解信息,所述输入形参,所述输入形参的注解信息,以及所述实体类的注解信息,确定所述数据操作接口对应ElasticSearch操作请求接口和操作命令;
基于所述ElasticSearch操作请求接口和所述操作命令,构建所述ElasticSearch调用流程;
所述基于所述简化框架中的ES翻译函数,应用所述数据操作接口的注解信息,所述输入形参,所述输入形参的注解信息,以及所述实体类的注解信息,确定所述数据操作接口对应ElasticSearch操作请求接口和操作命令,包括:
基于所述数据操作接口的注解信息,确定所述数据操作接口对应的ElasticSearch操作请求接口;
将所述输入形参的注解信息、所述实体类的注解信息和所述输入形参以对应的查询构建器进行封装,并将封装得到的查询构建器和所述输入形参的注解信息中的必要性类型进行组装,得到所述数据操作接口对应的ElasticSearch操作命令。
6.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述ElasticSearch数据操作方法。
7.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述ElasticSearch数据操作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210947847.5A CN115033312B (zh) | 2022-08-09 | 2022-08-09 | ElasticSearch数据操作方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210947847.5A CN115033312B (zh) | 2022-08-09 | 2022-08-09 | ElasticSearch数据操作方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115033312A CN115033312A (zh) | 2022-09-09 |
CN115033312B true CN115033312B (zh) | 2022-12-27 |
Family
ID=83130843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210947847.5A Active CN115033312B (zh) | 2022-08-09 | 2022-08-09 | ElasticSearch数据操作方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115033312B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959294A (zh) * | 2017-05-19 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 一种访问搜索引擎的方法和装置 |
CN110543517A (zh) * | 2019-08-26 | 2019-12-06 | 汉纳森(厦门)数据股份有限公司 | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6519603B1 (en) * | 1999-10-28 | 2003-02-11 | International Business Machine Corporation | Method and system for organizing an annotation structure and for querying data and annotations |
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN113760969A (zh) * | 2021-02-10 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种基于ElasticSearch的数据查询方法和装置 |
CN113641700A (zh) * | 2021-08-30 | 2021-11-12 | 北京沃东天骏信息技术有限公司 | 一种基于Spring boot框架的数据处理方法及装置 |
-
2022
- 2022-08-09 CN CN202210947847.5A patent/CN115033312B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959294A (zh) * | 2017-05-19 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 一种访问搜索引擎的方法和装置 |
CN110543517A (zh) * | 2019-08-26 | 2019-12-06 | 汉纳森(厦门)数据股份有限公司 | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 |
Non-Patent Citations (2)
Title |
---|
("SpringBoot使用注解的方式构建Elasticsearch查询语句,实现多条件的复杂查询";唐朝咖啡;《https://blog.csdn.net/u12500848/article/details/100779286》;20190912;第1-8页 * |
"springboot操作es";猪之仆;《https://blog.csdn.net/article/details/121143791》;20211104;第1-6页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115033312A (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110198247B (zh) | 接口测试方法及系统 | |
US7941450B2 (en) | Software, devices and methods facilitating execution of server-side applications at mobile devices | |
US7904421B2 (en) | Transparent virtual machine for mobile applications | |
US8204911B2 (en) | Software, devices and methods facilitating execution of server-side applications at mobile devices | |
RU2351976C2 (ru) | Механизм для предусмотрения вывода управляемой данными командной строки | |
JP5346154B2 (ja) | リモート境界を横切ってコンピュータ読取り可能オブジェクトを転送するためのシステムおよび方法 | |
US7533114B2 (en) | Mobile device having extensible software for presenting server-side applications, software and methods | |
CN113419729B (zh) | 基于组件化的前端页面搭建方法、装置、设备及存储介质 | |
CN111026634A (zh) | 一种接口自动化测试系统、方法、装置及存储介质 | |
CN110007926B (zh) | 语言转换方法及装置 | |
CN112328219A (zh) | 业务访问处理方法、装置、系统和计算机设备 | |
CN116700778B (zh) | 接口差异分析方法、设备、存储介质及装置 | |
CN115033312B (zh) | ElasticSearch数据操作方法及装置 | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN114281341A (zh) | 数据结构定义文件的编译方法、装置、计算机设备及介质 | |
CN113626001A (zh) | 一种基于脚本的api动态编排方法及装置 | |
CN113050935A (zh) | 生成混入对象的方法、装置、计算设备及计算机可读存储介质 | |
CN111309319A (zh) | 可继承的局数据动态页面配置方法和装置 | |
CN113961279A (zh) | 页面渲染方法、装置、服务器和存储介质 | |
CN111045943A (zh) | Mock数据的生成方法、测试系统及可读存储介质 | |
CN114816385B (zh) | 一种异构系统的集成方法、装置和设备以及存储介质 | |
CN114416027A (zh) | 一种软件低代码开发系统及方法 | |
CN114721929A (zh) | 测试方法、装置、存储介质及设备 | |
CN117971391A (zh) | 基于容器卡片引擎对接业务系统的方法和系统 | |
FI111566B (fi) | Menetelmä ohjelman hallintakaavion kääntämiseksi |
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 |