一种基于elasticsearch父子关系的海量发票数据查询方法及系统与流程

专利2022-06-30  79


本发明涉及发票数据查询技术领域,具体地说是一种基于elasticsearch父子关系的海量发票数据查询方法及系统。



背景技术:

目前,关于发票数据的存储和查询都是基于传统的关系型数据库,虽然能满足一般的查询发票的业务需求,但是基于物品模糊查询、海量数据处理时,查询响应速度慢,高并发查询条件下很容易造成服务器瘫痪。虽然现在有基于elasearch的数据查询,但是对于纳税人维度频繁变更,基于税务机关或者纳税人的维度查询的只能修改历史数据。



技术实现要素:

本发明的目的在于提供一种基于elasticsearch父子关系的海量发票数据查询方法及系统,用于解决在发票查询时,当纳税人维度频繁变更,事实表发票数据不会随着纳税人维度变更而变更,需要修改历史数据,工作量大且容易导致服务器瘫痪、错误率高的问题。

本发明解决其技术问题所采取的技术方案是:

本发明第一方面提供了一种基于elasticsearch父子关系的海量发票数据查询方法,其特征是,该方法包括以下步骤:

创建父子关系表,设置维度表纳税人数据为父节点,事实表发票数据为子节点;

创建父节点的具体信息、创建子节点的具体信息;

在父级和子级之间创建链接,使子级文档与父级文档存储在同一分片上;

采用固定的周期创建索引,通过has_child查询父级中的数据返回子级、查询子级中的数据返回父级。

结合第一方面,在第一方面第一种可能实现的方式中,在上述方法之前还包括:将维度表纳税人数据与事实表发票数据存储在greenplumn数据库中。

结合第一方面,在第一方面第二种可能实现的方式中,所述的维度表纳税人数据包括:纳税人key、纳税人识别号、纳税人名称、所属省份、所属地市、法定代表人名称、法人证件号码、财务联系人、税务机关、行业明细名称、经营范围、生产经营地址、从业人数、注册资本、登记注册乐行名称、开业登记日期、是否一般纳税人、认定一般纳税人日期、取消日期、电话号码、创建时间、行业key、地区key、纳税人电子档案号、纳税人状态代码、财务负责人证件号码、三证合一之前的纳税人识别号、开业登记日期、增值税企业类型代码、减免税审批结果标志、办税人姓名、办税人证件号码、税收管理员代码。

结合第一方面,在第一方面第三种可能实现的方式中,所述的事实表发票数据包括:开票月份、纳税人key、发票类别、物品名称、物品单位、物品序号、金额、税率、税额、发票代码、发票号码、dw_fact_xxfp的id、作废标志、开票日期、销方纳税人名称、购方纳税人名称、报税时间、列表序号、明细id、销方纳税人识别号、购方纳税人识别号、税控盘号、身份证号码、单位、商品编码、购方税务机关代码、差额开票标志、y是、n否、单价、物品数量、所属地市。

结合第一方面,在第一方面第四种可能实现的方式中,在父级和子级之间创建链接具体包括:采用纳税人key作为父级与子级的关联条件。

结合第一方面,在第一方面第五种可能实现的方式中,所述的创建父子关系表通过kettle调用elasticsearch-jdbc进行创建父子关系。

结合第一方面,在第一方面第六种可能实现的方式中,在创建索引时,还包括设置分词,用于数据的模糊查询、精确查询。

结合第一方面,在第一方面第七种可能实现的方式中,所述的模糊查询在设置分词时没有指定index属性,通过match_phras实现查询;所述的精确查询在设置分词时制定了index的not_analyzed属性,通过term实现查询。

本发明第二方面提供了一种基于elasticsearch父子关系的海量发票数据查询系统,其特征是,该系统包括父子关系表创建模块,用于通过kettle调用elasticsearch-jdbc创建父子关系表;或/和,

greenplumn数据库,用于存储父节点和子节点的具体信息;或/和,

关联模块,用于在父级和子级直接创建链接,使系统在不重新更新子索引的情况下能够更新父索引;或/和,

查询模块,用于创建索引,通过has_child进行快速查询。

结合第二方面,在第二方面第一种可能实现的方式中,该系统还包括分词设置模块,用于在创建索引时设置分词,实现数据的模糊查询和精确查询。

本发明第二方面的所述的系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。

由以上技术方案可知,本发明可有效的解决海量数据加工处理,通过has_child实现海量发票数据多条件查询秒级返回。通过在父级与子级之间建立链接,实现了事实表发票数据随着纳税人维度变更而变更,及时的调整并保证数据的准确性,解决了之前需要对每个事实表发票数据进行修改的问题,提高了工作效率,减少错误率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一种基于elasticsearch父子关系的海量发票数据查询方法流程示意图;

图2为本发明实施例所应用的一种基于elasticsearch父子关系的海量发票数据查询系统结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

发票数据的查询主要是应用于税局内部人员的应用,但是基于发票数据的敏感性,所以在税务机关内部是根据税务机关进行权限分离的数据查询,企业的发票数据只能有企业所管辖的税务机关进行查看,同时企业的历史数据也能同步查询,但是企业的所属税务机关等档案信息会频繁发生变更,这样对连续几年历史的事实表发票数据进行变更很消耗很长时间,很难满足实时性要求比较高的发票数据系统分析,基于事实表的数据量很大,一般维度表的数据量比较小,本发明实施例是采用父子关系提供一种海量发票数据查询方法,能过实现频繁变更相关基础维度信息数据的海量查询。如图1所示,一种基于elasticsearch父子关系的海量发票数据查询方法,该方法包括以下步骤:

s1、将维度表纳税人数据与事实表发票数据存储在greenplumn数据库中;

s2、创建父子关系表,设置维度表纳税人数据为父节点,事实表发票数据为子节点;

s3、创建父节点的具体信息、创建子节点的具体信息;

s4、在父级和子级之间创建链接,使子级文档与父级文档存储在同一分片上;

s5、采用固定的周期创建索引,通过has_child查询父级中的数据返回子级、查询子级中的数据返回父级。周期可选择按季度进行设置。

维度表纳税人数据包括:纳税人key、纳税人识别号、纳税人名称、所属省份、所属地市、法定代表人名称、法人证件号码、财务联系人、税务机关、行业明细名称、经营范围、生产经营地址、从业人数、注册资本、登记注册乐行名称、开业登记日期、是否一般纳税人、认定一般纳税人日期、取消日期、电话号码、创建时间、行业key、地区key、纳税人电子档案号、纳税人状态代码、财务负责人证件号码、三证合一之前的纳税人识别号、开业登记日期、增值税企业类型代码、减免税审批结果标志、办税人姓名、办税人证件号码、税收管理员代码。

事实表发票数据包括:开票月份、纳税人key、发票类别、物品名称、物品单位、物品序号、金额、税率、税额、发票代码、发票号码、dw_fact_xxfp的id、作废标志、开票日期、销方纳税人名称、购方纳税人名称、报税时间、列表序号、明细id、销方纳税人识别号、购方纳税人识别号、税控盘号、身份证号码、单位、商品编码、购方税务机关代码、差额开票标志、y是、n否、单价、物品数量、所属地市。

在父级和子级之间创建链接具体包括:采用纳税人key作为父级与子级的关联条件。

s1中,创建父子关系表通过kettle调用elasticsearch-jdbc进行创建父子关系。

s5中,在创建索引时,还包括设置分词,用于数据的模糊查询、精确查询。

模糊查询在设置分词时没有指定index属性,通过match_phras实现查询;所述的精确查询在设置分词时制定了index的not_analyzed属性,通过term实现查询。

如图2所示,一种基于elasticsearch父子关系的海量发票数据查询系统,该系统包括父子关系表创建模块,用于通过kettle调用elasticsearch-jdbc创建父子关系表;或/和,greenplumn数据库,用于存储父节点和子节点的具体信息;或/和,关联模块,用于在父级和子级直接创建链接,使系统在不重新更新子索引的情况下能够更新父索引;或/和,查询模块,用于创建索引,通过has_child进行快速查询;或/和,分词设置模块,用于在创建索引时设置分词,实现数据的模糊查询和精确查询。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。


技术特征:

1.一种基于elasticsearch父子关系的海量发票数据查询方法,其特征是,该方法包括以下步骤:

创建父子关系表,设置维度表纳税人数据为父节点,事实表发票数据为子节点;

创建父节点的具体信息、创建子节点的具体信息;

在父级和子级之间创建链接,使子级文档与父级文档存储在同一分片上;

采用固定的周期创建索引,通过has_child查询父级中的数据返回子级、查询子级中的数据返回父级。

2.根据权利要求1所述的方法,其特征是,在上述方法之前还包括:将维度表纳税人数据与事实表发票数据存储在greenplumn数据库中。

3.根据权利要求2所述的方法,其特征是,所述的维度表纳税人数据包括:纳税人key、纳税人识别号、纳税人名称、所属省份、所属地市、法定代表人名称、法人证件号码、财务联系人、税务机关、行业明细名称、经营范围、生产经营地址、从业人数、注册资本、登记注册乐行名称、开业登记日期、是否一般纳税人、认定一般纳税人日期、取消日期、电话号码、创建时间、行业key、地区key、纳税人电子档案号、纳税人状态代码、财务负责人证件号码、三证合一之前的纳税人识别号、开业登记日期、增值税企业类型代码、减免税审批结果标志、办税人姓名、办税人证件号码、税收管理员代码。

4.根据权利要求2所述的方法,其特征是,所述的事实表发票数据包括:开票月份、纳税人key、发票类别、物品名称、物品单位、物品序号、金额、税率、税额、发票代码、发票号码、dw_fact_xxfp的id、作废标志、开票日期、销方纳税人名称、购方纳税人名称、报税时间、列表序号、明细id、销方纳税人识别号、购方纳税人识别号、税控盘号、身份证号码、单位、商品编码、购方税务机关代码、差额开票标志、y是、n否、单价、物品数量、所属地市。

5.根据权利要求4或3任意一项所述的方法,其特征是,在父级和子级之间创建链接具体包括:采用纳税人key作为父级与子级的关联条件。

6.根据权利要求1所述的方法,其特征是,所述的创建父子关系表通过kettle调用elasticsearch-jdbc进行创建父子关系。

7.根据权利要求1所述的方法,其特征是,在创建索引时,还包括设置分词,用于数据的模糊查询、精确查询。

8.根据权利要求7所述的方法,其特征是,所述的模糊查询在设置分词时没有指定index属性,通过match_phras实现查询;所述的精确查询在设置分词时制定了index的not_analyzed属性,通过term实现查询。

9.一种基于elasticsearch父子关系的海量发票数据查询系统,其特征是,该系统包括父子关系表创建模块,用于通过kettle调用elasticsearch-jdbc创建父子关系表;或/和,

greenplumn数据库,用于存储父节点和子节点的具体信息;或/和,

关联模块,用于在父级和子级直接创建链接,使系统在不重新更新子索引的情况下能够更新父索引;或/和,

查询模块,用于创建索引,通过has_child进行快速查询。

10.根据权利要求9所述的系统,其特征是,该系统还包括分词设置模块,用于在创建索引时设置分词,实现数据的模糊查询和精确查询。

技术总结
一种基于elasticsearch父子关系的海量发票数据查询方法,该方法包括以下步骤:创建父子关系表,设置维度表纳税人数据为父节点,事实表发票数据为子节点;创建父节点的具体信息、创建子节点的具体信息;在父级和子级之间创建链接,使子级文档与父级文档存储在同一分片上;采用固定的周期创建索引,通过has_child查询父级中的数据返回子级、查询子级中的数据返回父级。还包括一种基于elasticsearch父子关系的海量发票数据查询系统。本发明通过has_child实现海量发票数据多条件查询秒级返回。通过在父级与子级间建立链接,实现了事实表发票数据随着纳税人维度变更而变更,及时的调整并保证数据的准确性,解决了之前需要对每个事实表发票数据进行修改的问题,提高了工作效率,减少错误率。

技术研发人员:赵建明;池纪田;吴童;徐记涛;于晓;苑鲁娜;张乐鹏;肖安房;张文志
受保护的技术使用者:航天信息(山东)科技有限公司
技术研发日:2019.12.30
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-58191.html

最新回复(0)