CN114676133A - 索引创建方法、装置、设备及存储介质 - Google Patents
索引创建方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114676133A CN114676133A CN202210259724.2A CN202210259724A CN114676133A CN 114676133 A CN114676133 A CN 114676133A CN 202210259724 A CN202210259724 A CN 202210259724A CN 114676133 A CN114676133 A CN 114676133A
- Authority
- CN
- China
- Prior art keywords
- index
- annotation
- target entity
- entity class
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000005096 rolling process Methods 0.000 claims description 58
- 238000013075 data extraction Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 description 12
- 239000008186 active pharmaceutical agent Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机技术领域,公开了一种索引创建方法、装置、设备及存储介质。本发明通过扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;从目标实体类中读取代码注解数据;根据代码注解数据生成索引创建报文;通过索引创建报文调用预设索引创建接口,以创建目标实体类对应的数据库索引。由于可以自动对目标代码进行扫描,根据所有标注有预设类型注解的实体类中的代码注解数据自动生成索引创建报文,然后通过索引创建报文调用预设所以创建接口创建对应的数据库索引,使得开发人员不必关注复杂的官方接口调用,仅需配置简单的注解即可自动生成索引,大幅度降低了开发人员的工作量,使得维护数据库索引更加简便。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种索引创建方法、装置、设备及存储介质。
背景技术
随着互联网发展,面向文档型数据库也被广泛使用,例如:elasticsearch(简称ES),在面向文档型数据库中一条数据就是一个json格式的文档。面向文档型数据库中的索引(index)相当于关系型数据库中的数据库,类型(type)相当于关系型数据库中的数据表,文档(documents)相当于关系型数据库的数据表中的行,字段(fields)相当于关系数据库的数据表中的列,索引结构(mapping)相当于关系型数据库中数据表的表结构,具体描述了这个索引中各个字段的属性。
面向文档型数据库的官方一般会提供API(如restful api或java api)来实现服务端与使用者的交互,但是,官方提供的API十分复杂、繁琐,开发人员学习成本高,且在使用过程中因为繁琐也十分容易出错,导致开发人员维护面向文档型数据库的索引时需要消耗大量的时间与精力,维护成本极高。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种索引创建方法、装置、设备及存储介质,旨在解决现有技术在维护面向文档型数据库的索引时维护成本高的技术问题。
为实现上述目的,本发明提供了一种索引创建方法,所述方法包括以下步骤:
扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;
从所述目标实体类中读取代码注解数据;
根据所述代码注解数据生成索引创建报文;
通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
可选的,所述根据所述代码注解数据生成索引创建报文的步骤,包括:
根据所述代码注解数据确定索引配置注解及索引结构注解集;
根据所述索引配置注解生成索引配置数据,并根据所述索引结构注解集生成字段配置数据;
将所述索引配置数据及所述字段配置数据以预设格式进行组合,获得索引创建报文。
可选的,所述根据所述索引结构注解集生成字段配置数据的步骤,包括:
对所述索引结构注解集进行遍历,并将遍历到的索引结构注解作为当前结构注解;
从所述当前结构注解中提取注解配置参数,并获取所述当前结构注解对应的实体类字段,获得目标实体类字段;
根据所述注解配置参数生成所述目标实体类字段对应的配置数据;
在遍历结束时,将获得的所述配置数据组合为字段配置数据。
可选的,所述根据所述注解配置参数生成所述目标实体类字段对应的配置数据的步骤,包括:
根据所述注解配置参数确定所述目标实体类字段的数据类型是否为嵌套对象类型;
若是,则获取所述目标实体类字段对应的实体类,获得嵌套实体类;
根据所述嵌套实体类中的字段信息生成所述目标实体类字段对应的配置数据。
可选的,所述根据所述注解配置参数生成所述目标实体类字段对应的配置数据的步骤,包括:
根据所述注解配置参数生成目标实体类字段对应的字段类型数据;
根据所述注解配置参数确定所述目标实体类字段是否支持高效搜索提示;
若所述目标实体类字段支持高效搜索提示,则根据所述注解配置参数生成高效搜索配置数据;
将所述字段类型数据及所述高效搜索配置数据组合为所述目标实体类字段对应的配置数据。
可选的,所述从所述目标实体类中读取代码注解数据的步骤之后,还包括:
根据所述代码注解数据确定所述目标实体类是否开启别名设置;
若是,则根据所述代码注解数据确定待写入别名及待设置索引名称;
检测是否存在所述待设置索引名称对应的数据库索引;
若存在所述待设置索引名称对应的数据库索引,则根据所述待写入别名及所述待设置索引名称生成别名创建报文;
通过所述别名创建报文调用预设别名创建接口,将所述待设置索引名称对应的数据库索引的别名设置为待写入别名。
可选的,所述通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引的步骤之前,还包括:
根据所述代码注解数据确定所述目标实体类是否开启滚动索引设置;
若开启滚动索引设置,则依据所述代码注解数据确定滚动索引生成规则;
从所述索引创建报文中提取待创建索引名称,获得待设置别名;
根据所述滚动索引生成规则生成滚动索引名称;
根据所述待设置别名及所述滚动索引名称对所述索引创建报文进行更新,获得滚动索引创建报文;
相应的,所述通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引的步骤,包括:
通过所述滚动索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
此外,为实现上述目的,本发明还提出一种索引创建装置,所述索引创建装置包括以下模块:
代码扫描模块,用于扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;
数据提取模块,用于从所述目标实体类中读取代码注解数据;
报文生成模块,用于根据所述代码注解数据生成索引创建报文;
索引创建模块,用于通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
此外,为实现上述目的,本发明还提出一种索引创建设备,所述索引创建设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的索引创建程序,所述索引创建程序被处理器执行时实现如上所述的索引创建方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有索引创建程序,所述索引创建程序执行时实现如上所述的索引创建方法的步骤。
本发明通过扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;从目标实体类中读取代码注解数据;根据代码注解数据生成索引创建报文;通过索引创建报文调用预设索引创建接口,以创建目标实体类对应的数据库索引。由于可以自动对目标代码进行扫描,根据所有标注有预设类型注解的实体类中的代码注解数据自动生成索引创建报文,然后通过索引创建报文调用预设所以创建接口创建对应的数据库索引,使得开发人员不必关注复杂的官方接口调用,仅需配置简单的注解即可自动生成索引,大幅度降低了开发人员的工作量,使得维护数据库索引更加简便。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
图2为本发明索引创建方法第一实施例的流程示意图;
图3为本发明索引创建方法第二实施例的流程示意图;
图4为本发明索引创建装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的索引创建设备结构示意图。
如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及索引创建程序。
在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在索引创建设备中,所述电子设备通过处理器1001调用存储器1005中存储的索引创建程序,并执行本发明实施例提供的索引创建方法。
本发明实施例提供了一种索引创建方法,参照图2,图2为本发明一种索引创建方法第一实施例的流程示意图。
本实施例中,所述索引创建方法包括以下步骤:
步骤S10:扫描目标代码中标注有预设类型注解的实体类,获得目标实体类。
需要说明的是,本实施例的执行主体可以是所述索引创建设备,所述索引创建设备可以是个人电脑、服务器等电子设备,还可以是其他可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以索引创建设备为例对本发明索引创建方法进行说明。由于面向文档型数据库类型极多,而elasticsearch(简称ES)是极为典型的面向文档型数据库,在本实施例及下述各实施例中,以ES数据库为例对本发明索引创建方法进行说明。
需要说明的是,由于以ES数据库为例进行说明,则本实施例中预设类型注解是针对ES数据库预先设置的,例如:将注解“@ESMetaData”作为预设类型注解。目标代码可以是用户指定的代码,例如:用户启动某软件项目时,会将软件项目所包含的代码作为目标代码。
在实际使用中,对实体类标注预设类型注解时,一般会将注解设置在实体类的类名上方,因此,扫描目标代码中标注有预设类型注解的实体类,获得目标实体类可以是扫描目标代码,将目标代码中类名上标注有预设类型注解的实体类作为目标实体类。
在具体实现中,对目标代码进行扫描时可以是自行编写代码进行注解扫描,也可以是利用现有的代码框架对目标代码进行扫描,例如:假设目标代码为JAVA代码,则可以借助现有的spring框架中的ClassPathBeanDefinitionScanner的doScan方法来实现在软件项目启动时对标注@ESMetaData注解的JAVA实体类的扫描,扫描后将标注这个注解的实体类托管给Spring容器进行管理,然后从Spring容器中获取目标实体类。
步骤S20:从所述目标实体类中读取代码注解数据。
需要说明的是,注解可以标注在实体类的类名上(简称为索引配置注解,例如:@ESMetaData),也可以标注在实体类的字段上(简称为索引结构注解,例如:@ESMapping以及@ESID,@ESID是一种特殊的@ESMapping注解,是用于标识将某实体类字段设置为唯一主键的注解)。代码注解数据可以包括目标实体类中所有的注解数据,例如:索引配置注解的注解数据以及索引结构注解的注解数据。
需要说明的是,目标实体类中可能还包含有与创建数据库索引不相关的其他注解,从目标实体类中读取代码注解数据时可以先读取目标实体类中的所有注解数据,然后将其中与创建数据库索引不相关的注解数据清除,然后将剩余的注解数据作为代码注解数据。
在实际使用中,标注在实体类的类名上的注解,是用于描述索引的属性信息的注解,其中可配置的属性如下表1所示:
表1实体类类名注解的配置项列表
标注在实体类的字段上的注解,是用于描述索引结构中字段对应的属性信息的注解,其中可配置的属性如下表2所示:
表2实体类字段注解配置项列表
进一步的,在面向文档型数据库中还可以为索引设置别名,即在查询时将别名也作为查询条件,例如:查询索引名为“good”的索引下的数据,则会查询名称为“good”的索引以及别名为“good”的索引下的数据,而若是某个实体类开启了别名设置,则表示并不需要为该实体类创建对应的索引,而是需要设置别名,因此,本实施例所述步骤S20之后,还可以包括:
根据所述代码注解数据确定所述目标实体类是否开启别名设置;
若是,则根据所述代码注解数据确定待写入别名及待设置索引名称;
检测是否存在所述待设置索引名称对应的数据库索引;
若存在所述待设置索引名称对应的数据库索引,则根据所述待写入别名及所述待设置索引名称生成别名创建报文;
通过所述别名创建报文调用预设别名创建接口,将所述待设置索引名称对应的数据库索引的别名设置为待写入别名。
需要说明的是,通过设置索引配置注解中的注解配置可以进行别名设置,根据代码注解数据确定目标实体类是否开启别名设置可以是从代码注解数据中提取索引配置注解的注解数据,读取其中的别名相关设置,根据别名相关设置确定是否开启别名设置,例如:读取到的别名相关设置为“alias=true;aliasIndex={A},writeIndex=B”,则表示开启别名设置,并为索引名为A的索引设置别名,在存储将该实体类对应的实体类对象时,将数据存储至索引名为B的索引中。
需要说明的是,待写入别名可以是索引配置注解中“indexName”属性所对应的数据,待设置索引名称为索引配置注解中“aliasIndex”属性所对应的数据,例如:假设索引配置注解为“@MetaData(indexName=A,alias=true,aliasIndex={B})”,则此时待写入别名为A,待待设置索引名称为B。
可以理解的是,开发人员在进行配置时可能会出现设置错误,此时面向文档型数据库中可能并不存在待设置索引名称对应的数据库索引,若此时进行别名设置,可能会导致出现异常,因此,可以先检测是否存在待设置索引名称对应的数据库索引,若存在所述待设置索引名称对应的数据库索引,才根据待写入别名及待设置索引名称生成别名创建报文,然后根据别名创建报文调用预设别名创建接口,将待设置索引名称对应的数据库索引的别名设置为待写入别名。其中,预设别名创建接口为面向文档型数据库的官方提供的为索引设置别名的API接口。
步骤S30:根据所述代码注解数据生成索引创建报文。
需要说明的是,代码注解数据包括了实体类中所有的注解数据,包括在实体类的类名上的注解数据以及标注在实体类中各字段上的注解数据,因此,从代码注解数据中可以读取关于索引的配置,以及关于索引结构的配置,将读取到的配置转换为官方提供的API所规定的格式,即可获得索引创建报文。
步骤S40:通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
需要说明的是,预设索引创建接口可以是面向文档型数据库的官方提供的创建索引时需要访问的API接口。通过索引创建报文调用预设索引创建接口可以是将索引创建报文作为接口调用参数,将接口调用参数传入预设索引创建接口,以调用预设索引创建接口。
可以理解的是,索引创建报文的格式为预设索引创建接口所规定的格式,因此,预设索引创建接口可以正常解析索引创建报文,并根据索引创建报文在面向文档型数据库中创建对应的数据库索引。
在具体实现中,由于在软件项目启动之前,开发人员可能已经预先手动在面向文档型数据库中创建了对应的索引,或者该软件项目已经不是第一次启动,即在本次软件项目启动之前,已经扫描过该软件项目对应的代码,并已经在面向文档型数据库中创建了对应的索引,此时若还是直接根据索引创建报文调用预设索引创建接口创建索引,可能会造成不必要的性能损耗,甚至出现执行错误,为了避免此种现象,在通过索引创建报文调用预设索引创建接口之前,还可以从索引创建报文中提取待创建索引的索引名称,检测面向文档型数据库中是否已经存在待创建索引的索引名称对应的索引,在不存在时,才通过索引创建报文调用预设索引创建接口,继续创建目标实体类对应的数据库索引。
进一步的,滚动索引是面向文档数据库中对索引数据治理的方案,可以根据自定义的规则动态的生成新的索引,治理效果除了有效控制索引体积外还有数据老化处理的作用,为了满足用户对滚动索引的设置需求,本实施例所述步骤S40之前,还可以包括:
根据所述代码注解数据确定所述目标实体类是否开启滚动索引设置;
若开启滚动索引设置,则依据所述代码注解数据确定滚动索引生成规则;
从所述索引创建报文中提取待创建索引名称,获得待设置别名;
根据所述滚动索引生成规则生成滚动索引名称;
根据所述待设置别名及所述滚动索引名称对所述索引创建报文进行更新,获得滚动索引创建报文;
相应的,所述通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引的步骤,包括:
通过所述滚动索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
需要说明的是,通过设置索引配置注解中的注解配置可以进行开启滚动索引设置,根据代码注解数据确定目标实体类是否开启滚动索引设置可以是从代码注解数据中提取索引配置注解的注解数据,读取其中的滚动索引相关设置,根据滚动索引相关设置确定是否开启,例如:假设滚动索引相关设置为“rollover=true;autoRollover=true”,则表示目标实体类开启滚动索引,且开启自动生成滚动索引名称。
需要说明的是,依据所述代码注解数据确定滚动索引生成规则可以是从代码注解数据提取滚动索引相关设置,并根据滚动索引相关设置中的条件生成滚动索引生成规则,例如:假设滚动索引相关设置为“rollover=true;autoRollover=true”,则表示开启滚动索引,以及开启自动生成滚动索引名称,且并未设置滚动索引名称生成条件,此时会采用默认值,滚动索引生成规则为“以注解配置的索引名称+当前日期+顺序序列号组成”,若索引配置注解中配置的索引名称为A(即indexName=A),当前日期为“XX-XX”,顺序序列号为0001,则此时生成的滚动索引名称为“A-XX-XX-0001”。
在实际使用中,从索引创建报文中提取待创建索引名称,获得待设置别名可以将将从索引创建报文中读取到的待创建索引名称作为待设置别名。根据待设置别名及滚动索引名称对索引创建报文进行更新,获得滚动索引创建报文可以是将索引创建报文中的待创建索引名称修改为滚动索引名称,将索引创建报文中的索引别名修改为待设置别名。通过滚动索引创建报文调用预设索引创建接口,此时创建的数据库索引时一个索引名与滚动索引名称一致,别名与待设置别名一致的索引。
例如:假设滚动索引名称为“A-XX-XX-0001”,索引创建报文为{“good”:{“aliases”:{}}“mappings”:{......},“settings”:{“index”:{......}}},则此时索引创建报文中的待创建索引名称为“good”,则待设置别名为“good”,则此时得到的滚动索引创建报文为{“A-XX-XX-0001”:{“aliases”:{“good”}}“mappings”:{......},“settings”:{“index”:{......}}},则此时创建的数据库对应的索引为名称为“A-XX-XX-0001”,别名为“good”的索引。
在具体实现中,还可以在滚动索引创建完成之后为其生成一个线程,用于检测滚动索引中的数据量或滚动索引存在时长,在滚动索引中的数据量大于用户设置的数据量上限或索引存在时长大于用户设置的单滚动索引存在最大时长时,生成将生成滚动索引时使用的顺序序列号加一,从而生成新的滚动索引。
本实施例通过扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;从目标实体类中读取代码注解数据;根据代码注解数据生成索引创建报文;通过索引创建报文调用预设索引创建接口,以创建目标实体类对应的数据库索引。由于可以自动对目标代码进行扫描,根据所有标注有预设类型注解的实体类中的代码注解数据自动生成索引创建报文,然后通过索引创建报文调用预设所以创建接口创建对应的数据库索引,使得开发人员不必关注复杂的官方接口调用,仅需配置简单的注解即可自动生成索引,大幅度降低了开发人员的工作量,使得维护数据库索引更加简便。
参考图3,图3为本发明一种索引创建方法第二实施例的流程示意图。
基于上述第一实施例,本实施例索引创建方法的所述步骤S30,包括:
步骤S301:根据所述代码注解数据确定索引配置注解及索引结构注解集。
需要说明的是,实体类中可能包含多个字段,即在一个实体类中可能存在多个索引结构注解,因此,根据代码注解数据确定索引配置注解及索引结构注解集可以是根据索引标注的位置的不同,将代码注解数据分为索引配置注解及索引结构注解,然后将索引结构注解进行聚合,获得索引结构注解集。
步骤S302:根据所述索引配置注解生成索引配置数据,并根据所述索引结构注解集生成字段配置数据。
需要说明的是,根据索引配置注解生成索引配置数据可以是读取索引配置注解中的注解配置,然后将注解配置转换为符合面向文档型数据库的官方所规定的的格式,从而获得索引配置数据。其中,可以预先为注解配置与官方所规定的配置项格式设置映射关系表,在进行转换时根据映射关系表中的映射关系进行格式转换。
需要说明的是,根据索引结构注解集生成字段配置数据可以是根据索引结构注解集中各索引结构注解的注解配置确定索引结构中各个字段的配置数据,然后将获得的配置数据进行聚合,并转换为符合面向文档型数据库的官方所规定的的格式,从而获得字段配置数据。
在具体实现中,对索引结构注解集进行整体处理,容易出现重复处理或漏处理某索引结构注解的现象,为了避免此种现象,本实施例所述步骤S302,可以包括:
对所述索引结构注解集进行遍历,并将遍历到的索引结构注解作为当前结构注解;
从所述当前结构注解中提取注解配置参数,并获取所述当前结构注解对应的实体类字段,获得目标实体类字段;
根据所述注解配置参数生成所述目标实体类字段对应的配置数据;
在遍历结束时,将获得的所述配置数据组合为字段配置数据。
需要说明的是,对索引结构注解集进行遍历可以是对索引结构注解集进行顺序遍历,也可以是对索引结构注解集进行倒序遍历,本实施例对此不加以限制。
需要说明的是,注解配置参数可以包括注解配置项及注解配置项对应的设置参数,获取当前结构注解对应的实体类字段,获得目标实体类字段可以是将被当前结构注解标注的实体类字段作为目标实体类字段。根据注解配置参数生成目标实体类字段对应的配置数据可以是依据预设配置参数映射表将注解配置参数转换为官方所规定的配置项格式,从而获得目标实体类字段对应的配置数据。预设配置参数映射表可以由索引创建设备的管理人员预先进行设置,其中包括各注解配置参数与配置项格式的映射关系。
例如:假设当前结构注解为“@ESMapping(datatype=date)”,对应的目标实体类字段为“good_date”,则其中的注解配置参数为datatpe=date映射配置数据格式“type”:“date”,此时生成的目标实体类字段对应的配置数据为“good_date”:{“type”:“date”}。
在实际使用中,在遍历结束时,可以获得目标实体类中各个实体类字段对应的配置数据,将各实体类字段对应的配置数据填充至预设模板中,即可获得字段配置数据,其中,预设模板可以根据面向结构数据库的官方API规定的格式预先进行设置。例如:假设目标实体类中有两个字段,包括“good_date”和“good_type”,分别对应的配置数据为“good_date”:{“type”:“date”}和“good_date”:{“type”:“keyword”},预设模板为{“mappings”:{“properties”:{XX,XX,...}}},其中XX为模板占位符,将各字段对应的配置数据填充至预设模板中,则获得的字段配置数据为:{“mappings”:{“properties”:{“good_date”:{“type”:“date”},“good_date”:{“type”:“keyword”}}}}。
进一步的,由于软件开发需要,部分情况会出现对象嵌套现象,即实体类中某个实体类字段存储的是另一个实体类的实体类对象,为了在此种情况依旧可以正常创建数据库索引,本实施例所述根据所述注解配置参数生成所述目标实体类字段对应的配置数据的步骤,可以包括:
根据所述注解配置参数确定所述目标实体类字段的数据类型是否为嵌套对象类型;
若是,则获取所述目标实体类字段对应的实体类,获得嵌套实体类;
根据所述嵌套实体类中的字段信息生成所述目标实体类字段对应的配置数据。
需要说明的是,根据注解配置参数确定目标实体类字段的数据类型是否为嵌套对象类型可以是获取检测注解配置参数中是否存在“nested_class”配置项,若存在,且该配置项后对应的参数不为“null”或“”,则表示该目标实体类字段的数据类型为嵌套对象类型。此时可以根据“nested_class”配置项对应的参数查找实体类,从而获取目标实体类字段对应的实体类。
可以理解的是,若目标实体类字段的数据类型为嵌套对象类型,则表示目标实体类字段存储的是另一个实体类的实体类对象,此时无法按普通的方式生成实体类字段对应的配置数据,因此,需要获取该目标实体类字段对应的实体类,获得嵌套实体类,然后读取该嵌套实体类中存在的所有字段的字段信息,将其中的字段信息转化为官方所规定的配置项格式,从而获得目标实体类字段对应的配置数据。其中,字段信息可以包括字段名称、字段类型等信息。
例如:假设目标实体类字段为“good_member”,对应的实体类为“member”,该实体类中包含“name”和“age”两个字段,对应的字段类型分别为“text”和“int”,则此时生成的该目标实体类字段对应的配置数据为“good_member”:{“properties”:{“name”:{“type”:“text”},“age”:{“type”:“int”}}}}。
进一步的,面向文档型数据库一般还支持高效搜索提示等功能,为了令本发明索引创建也适于高效搜索提示功能,本实施例所述根据所述注解配置参数生成所述目标实体类字段对应的配置数据的步骤,可以包括:
根据所述注解配置参数生成目标实体类字段对应的字段类型数据;
根据所述注解配置参数确定所述目标实体类字段是否支持高效搜索提示;
若所述目标实体类字段支持高效搜索提示,则根据所述注解配置参数生成高效搜索配置数据;
将所述字段类型数据及所述高效搜索配置数据组合为所述目标实体类字段对应的配置数据。
需要说明的是,高效搜索提示一般分为两种,分别是高效全文搜索提示及高效前缀搜索提示,若注解配置参数中存在“ngram=true”和/或“suggest=true”,则表示该目标实体类字段被配置为支持高效搜索提示。字段类型数据可以是目标实体类字段对应的数据类型等配置数据,高效搜索配置数据可以包括高效搜索规则、分词其等配置数据。
在实际使用中,若目标实体类字段被配置为支持高效搜索提示则此时生成目标实体类字段对应的配置数据时不仅仅需要获取字段类型数据,还需要为其设置高效搜索配置数据,然后将字段类型数据及高效搜索配置数据组合为目标实体类字段对应的配置数据。
例如:假设目标实体类字段为“goods_name”,其对应的当前结构注解为
@ESMapping(datatype=DataType.text_type,analyzer=Analyzer.ik_max_word,search_analyzer=Analyzer.ik_max_word,suggest=true),则此时表示该字段支持高效前缀搜索提示,此时为其生成的配置数据为
假设目标实体类字段为“phone”,其对应的当前结构注解为@ESMapping(datatype=DataType.keyword_type,ngram=true),则此时表示该字段支持高效全文搜索提示,则此时为其生成的配置数据为
步骤S303:将所述索引配置数据及所述字段配置数据以预设格式进行组合,获得索引创建报文。
需要说明的是,将索引配置数据及字段配置数据以预设格式进行组合,获得索引创建报文可以是按预设格式生成报文模板,然后将索引配置数据及字段配置数据填充至报文模板中,从而获得索引创建报文。
本实施例通过根据所述代码注解数据确定索引配置注解及索引结构注解集;根据所述索引配置注解生成索引配置数据,并根据所述索引结构注解集生成字段配置数据;将所述索引配置数据及所述字段配置数据以预设格式进行组合,获得索引创建报文。由于是将代码注解数据根据注解类型不同分别进行处理,先根据索引配置注解生成字段配置数据,根据索引结构注解集生成字段配置数据,然后将索引配置数据及字段配置数据组合为索引创建报文,将各个数据生成流程分离,可以提高程序执行效率,且可以降低程序的耦合性,在报文转换出现异常时,更便于开发人员进行异常排查。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有索引创建程序,所述索引创建程序被处理器执行时实现如上文所述的索引创建方法的步骤。
参照图4,图4为本发明索引创建装置第一实施例的结构框图。
如图4所示,本发明实施例提出的索引创建装置包括:
代码扫描模块10,用于扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;
数据提取模块20,用于从所述目标实体类中读取代码注解数据;
报文生成模块30,用于根据所述代码注解数据生成索引创建报文;
索引创建模块40,用于通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
本实施例通过扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;从目标实体类中读取代码注解数据;根据代码注解数据生成索引创建报文;通过索引创建报文调用预设索引创建接口,以创建目标实体类对应的数据库索引。由于可以自动对目标代码进行扫描,根据所有标注有预设类型注解的实体类中的代码注解数据自动生成索引创建报文,然后通过索引创建报文调用预设所以创建接口创建对应的数据库索引,使得开发人员不必关注复杂的官方接口调用,仅需配置简单的注解即可自动生成索引,大幅度降低了开发人员的工作量,使得维护数据库索引更加简便。
进一步的,所述报文生成模块30,还用于根据所述代码注解数据确定索引配置注解及索引结构注解集;根据所述索引配置注解生成索引配置数据,并根据所述索引结构注解集生成字段配置数据;将所述索引配置数据及所述字段配置数据以预设格式进行组合,获得索引创建报文。
进一步的,所述报文生成模块30,还用于对所述索引结构注解集进行遍历,并将遍历到的索引结构注解作为当前结构注解;从所述当前结构注解中提取注解配置参数,并获取所述当前结构注解对应的实体类字段,获得目标实体类字段;根据所述注解配置参数生成所述目标实体类字段对应的配置数据;在遍历结束时,将获得的所述配置数据组合为字段配置数据。
进一步的,所述报文生成模块30,还用于根据所述注解配置参数确定所述目标实体类字段的数据类型是否为嵌套对象类型;若是,则获取所述目标实体类字段对应的实体类,获得嵌套实体类;根据所述嵌套实体类中的字段信息生成所述目标实体类字段对应的配置数据。
进一步的,所述报文生成模块30,还用于根据所述注解配置参数生成目标实体类字段对应的字段类型数据;根据所述注解配置参数确定所述目标实体类字段是否支持高效搜索提示;若所述目标实体类字段支持高效搜索提示,则根据所述注解配置参数生成高效搜索配置数据;将所述字段类型数据及所述高效搜索配置数据组合为所述目标实体类字段对应的配置数据。
进一步的,所述数据提取模块20,还用于根据所述代码注解数据确定所述目标实体类是否开启别名设置;若是,则根据所述代码注解数据确定待写入别名及待设置索引名称;检测是否存在所述待设置索引名称对应的数据库索引;若存在所述待设置索引名称对应的数据库索引,则根据所述待写入别名及所述待设置索引名称生成别名创建报文;通过所述别名创建报文调用预设别名创建接口,将所述待设置索引名称对应的数据库索引的别名设置为待写入别名。
进一步的,所述索引创建模块40,还用于根据所述代码注解数据确定所述目标实体类是否开启滚动索引设置;若开启滚动索引设置,则依据所述代码注解数据确定滚动索引生成规则;从所述索引创建报文中提取待创建索引名称,获得待设置别名;根据所述滚动索引生成规则生成滚动索引名称;根据所述待设置别名及所述滚动索引名称对所述索引创建报文进行更新,获得滚动索引创建报文;
所述索引创建模块40,还用于通过所述滚动索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的索引创建方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种索引创建方法,其特征在于,所述索引创建方法包括以下步骤:
扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;
从所述目标实体类中读取代码注解数据;
根据所述代码注解数据生成索引创建报文;
通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
2.如权利要求1所述的索引创建方法,其特征在于,所述根据所述代码注解数据生成索引创建报文的步骤,包括:
根据所述代码注解数据确定索引配置注解及索引结构注解集;
根据所述索引配置注解生成索引配置数据,并根据所述索引结构注解集生成字段配置数据;
将所述索引配置数据及所述字段配置数据以预设格式进行组合,获得索引创建报文。
3.如权利要求2所述的索引创建方法,其特征在于,所述根据所述索引结构注解集生成字段配置数据的步骤,包括:
对所述索引结构注解集进行遍历,并将遍历到的索引结构注解作为当前结构注解;
从所述当前结构注解中提取注解配置参数,并获取所述当前结构注解对应的实体类字段,获得目标实体类字段;
根据所述注解配置参数生成所述目标实体类字段对应的配置数据;
在遍历结束时,将获得的所述配置数据组合为字段配置数据。
4.如权利要求3所述的索引创建方法,其特征在于,所述根据所述注解配置参数生成所述目标实体类字段对应的配置数据的步骤,包括:
根据所述注解配置参数确定所述目标实体类字段的数据类型是否为嵌套对象类型;
若是,则获取所述目标实体类字段对应的实体类,获得嵌套实体类;
根据所述嵌套实体类中的字段信息生成所述目标实体类字段对应的配置数据。
5.如权利要求4所述的索引创建方法,其特征在于,所述根据所述注解配置参数生成所述目标实体类字段对应的配置数据的步骤,包括:
根据所述注解配置参数生成目标实体类字段对应的字段类型数据;
根据所述注解配置参数确定所述目标实体类字段是否支持高效搜索提示;
若所述目标实体类字段支持高效搜索提示,则根据所述注解配置参数生成高效搜索配置数据;
将所述字段类型数据及所述高效搜索配置数据组合为所述目标实体类字段对应的配置数据。
6.如权利要求1-5任一项所述的索引创建方法,其特征在于,所述从所述目标实体类中读取代码注解数据的步骤之后,还包括:
根据所述代码注解数据确定所述目标实体类是否开启别名设置;
若是,则根据所述代码注解数据确定待写入别名及待设置索引名称;
检测是否存在所述待设置索引名称对应的数据库索引;
若存在所述待设置索引名称对应的数据库索引,则根据所述待写入别名及所述待设置索引名称生成别名创建报文;
通过所述别名创建报文调用预设别名创建接口,将所述待设置索引名称对应的数据库索引的别名设置为待写入别名。
7.如权利要求1-5任一项所述的索引创建方法,其特征在于,所述通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引的步骤之前,还包括:
根据所述代码注解数据确定所述目标实体类是否开启滚动索引设置;
若开启滚动索引设置,则依据所述代码注解数据确定滚动索引生成规则;
从所述索引创建报文中提取待创建索引名称,获得待设置别名;
根据所述滚动索引生成规则生成滚动索引名称;
根据所述待设置别名及所述滚动索引名称对所述索引创建报文进行更新,获得滚动索引创建报文;
相应的,所述通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引的步骤,包括:
通过所述滚动索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
8.一种索引创建装置,其特征在于,所述索引创建装置包括以下模块:
代码扫描模块,用于扫描目标代码中标注有预设类型注解的实体类,获得目标实体类;
数据提取模块,用于从所述目标实体类中读取代码注解数据;
报文生成模块,用于根据所述代码注解数据生成索引创建报文;
索引创建模块,用于通过所述索引创建报文调用预设索引创建接口,以创建所述目标实体类对应的数据库索引。
9.一种索引创建设备,其特征在于,所述索引创建设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的索引创建程序,所述索引创建程序被处理器执行时实现如权利要求1-7中任一项所述的索引创建方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有索引创建程序,所述索引创建程序执行时实现如权利要求1-7中任一项所述的索引创建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210259724.2A CN114676133A (zh) | 2022-03-16 | 2022-03-16 | 索引创建方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210259724.2A CN114676133A (zh) | 2022-03-16 | 2022-03-16 | 索引创建方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676133A true CN114676133A (zh) | 2022-06-28 |
Family
ID=82073843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210259724.2A Pending CN114676133A (zh) | 2022-03-16 | 2022-03-16 | 索引创建方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676133A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115589440A (zh) * | 2022-12-12 | 2023-01-10 | 北京沐融信息科技股份有限公司 | 一种报文注解配置方法、组包方法及解析方法 |
CN118035251A (zh) * | 2024-04-11 | 2024-05-14 | 河北省交通规划设计研究院有限公司 | 基于多特征融合的城市数据模型管理系统及方法 |
CN118764542A (zh) * | 2024-08-28 | 2024-10-11 | 武汉博易讯信息科技有限公司 | 一种全流量数据存储方法、相关方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021012553A1 (zh) * | 2019-07-25 | 2021-01-28 | 深圳壹账通智能科技有限公司 | 一种数据处理方法及相关设备 |
CN113742337A (zh) * | 2021-08-02 | 2021-12-03 | 北京思特奇信息技术股份有限公司 | 一种基于java注解生成数据库建表语句的方法及系统 |
-
2022
- 2022-03-16 CN CN202210259724.2A patent/CN114676133A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021012553A1 (zh) * | 2019-07-25 | 2021-01-28 | 深圳壹账通智能科技有限公司 | 一种数据处理方法及相关设备 |
CN113742337A (zh) * | 2021-08-02 | 2021-12-03 | 北京思特奇信息技术股份有限公司 | 一种基于java注解生成数据库建表语句的方法及系统 |
Non-Patent Citations (1)
Title |
---|
天大会下雨: "springboot2.x 整合 elasticsearch 创建索引的方式", pages 1 - 4, Retrieved from the Internet <URL:https://blog.csdn.net/chenxihua1/article/details/103311138> * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115589440A (zh) * | 2022-12-12 | 2023-01-10 | 北京沐融信息科技股份有限公司 | 一种报文注解配置方法、组包方法及解析方法 |
CN115589440B (zh) * | 2022-12-12 | 2023-03-21 | 北京沐融信息科技股份有限公司 | 一种报文注解配置方法、组包方法及解析方法 |
CN118035251A (zh) * | 2024-04-11 | 2024-05-14 | 河北省交通规划设计研究院有限公司 | 基于多特征融合的城市数据模型管理系统及方法 |
CN118764542A (zh) * | 2024-08-28 | 2024-10-11 | 武汉博易讯信息科技有限公司 | 一种全流量数据存储方法、相关方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108519967B (zh) | 图表可视化方法、装置、终端和存储介质 | |
CN114676133A (zh) | 索引创建方法、装置、设备及存储介质 | |
CA2684822C (en) | Data transformation based on a technical design document | |
US8418142B2 (en) | Architecture for data validation | |
US20140207826A1 (en) | Generating xml schema from json data | |
CN106648569B (zh) | 目标序列化实现方法和装置 | |
CN104462029A (zh) | 一种智能终端中富文本显示的方法和系统 | |
CN111274263A (zh) | 可视化数据库变更语句生成方法、装置及存储介质 | |
CN102193798A (zh) | 基于Internet的OpenAPI自动获取方法 | |
CN110109983B (zh) | 一种操作Redis数据库的方法和装置 | |
CN110489625A (zh) | 一种网页数据采集模板的生成方法和装置 | |
CN110474836A (zh) | 一种邮件模板生成方法、装置、计算设备和介质 | |
CN109597825B (zh) | 规则引擎调用方法、装置、设备及计算机可读存储介质 | |
CN112347794A (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
CN106951227B (zh) | 一种更新导航栏的方法和装置 | |
CN115982199A (zh) | 数据查询方法、服务器、设备及存储介质 | |
CN111694632A (zh) | 业务数据的显示方法、装置、设备及存储介质 | |
CN110362630A (zh) | 数据管理方法、装置、设备与计算机可读存储介质 | |
CN114356991A (zh) | 数据查询方法、数据聚合方法、装置、设备及介质 | |
US12050581B2 (en) | Method and apparatus for processing table of document, and device and medium | |
CN108897742A (zh) | 一种日志国际化方法、系统、设备及计算机可读存储介质 | |
CN113703777A (zh) | 基于数据库表的代码生成方法、装置、存储介质和设备 | |
CN116975087A (zh) | 一种异构数据源的检索方法、装置、设备和介质 | |
CN114327611A (zh) | 接口描述文档的生成方法、装置、计算机设备及存储介质 | |
US20090313628A1 (en) | Dynamically batching remote object model commands |
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 |