【技术实现步骤摘要】
用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法
本专利技术涉及数据结构
,具体涉及一种用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法。
技术介绍
随着云时代的来临,大数据也吸引了越来越多的关注。大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理(MPP)数据库、数据挖掘电网、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。ElasticSearch是一个基于Lucene的搜索服务器,设计用于云计算中,能够达到实时搜索、稳定、可靠、快速,使用方便的目的。如要建立一个网站或应用程序,并要实现搜索和统计的相关功能,而ElasticSearch统计数据时默认返回的Aggregations数据结构是非常复杂的,不利于开发时使用。因此需要解决此种复杂数据结构在开发中带来的难以解析使用的问题。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是:如何解决ES聚合结果复杂难以解析的问题。(二)技术方案为了解决上述技术问题,本专利技术提供了一种用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法,包括以下步骤:步骤一、获取ElasticSearch聚合的结果;步骤二、转换结果数据,步骤三、数据汇总;步骤一中获取ElasticSearch聚合的结果时,使用Es聚合运算API与查询API相结合的方法;步骤二的转换结果数据分为三个子步骤:转换结果集为JSON、递归取值、数据转换;步骤三是将步骤二得到的数据结构的最终数据 ...
【技术保护点】
1.一种用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法,其特征在于,包括以下步骤:步骤一、获取ElasticSearch聚合的结果;步骤二、转换结果数据,步骤三、数据汇总;步骤一中获取ElasticSearch聚合的结果时,使用Es聚合运算API与查询API相结合的方法;步骤二的转换结果数据分为三个子步骤:转换结果集为JSON、递归取值、数据转换;步骤三是将步骤二得到的数据结构的最终数据用于数据汇总。
【技术特征摘要】
1.一种用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法,其特征在于,包括以下步骤:步骤一、获取ElasticSearch聚合的结果;步骤二、转换结果数据,步骤三、数据汇总;步骤一中获取ElasticSearch聚合的结果时,使用Es聚合运算API与查询API相结合的方法;步骤二的转换结果数据分为三个子步骤:转换结果集为JSON、递归取值、数据转换;步骤三是将步骤二得到的数据结构的最终数据用于数据汇总。2.如权利要求1所述的方法,其特征在于,步骤一具体包括以下步骤:1.创建Es查询SearchRequestBuildersrb:srb创建方法为TransportClient.prepareSearch(索引名称).setTypes(索引类型)2.创建过滤条件QueryBuilderqbqb创建方法为QueryBuilders.termsQuery(参数名,参数值)3.创建聚合TermsAggregationBuildertAggb创建字段f1所对应的聚合agg1,并命名为"f1_count",方法为:AggregationBuilders.terms("f1_count").field("f1.raw"),以同样的方法创建字段f2、f3所对应的聚合agg2、agg3,并分别命名为"f2_count"、"f3_count";tAggb创建方法为:tAggb=agg1.subAggregation(agg2.subAggregation(agg3));subAggregation表示聚合关系;4.添加过滤和聚合在查询时加入过滤和聚合约束:srb.setQuery(qb).addAggregation(tAggb);SearchResponsesr=srb.execute().actionGet()。3.如权利要求2所述的方法,其特征在于,步骤二中将结果集转换为JSON具体为:ElasticSearch聚合的结果集为不规则的树形结果,每不同层根节点名称都互不相同,但每相同层间根节点的名称相同,给ES每一层的聚合结果起名的时候使用当前聚合字段名+"_count",为:f1_count,f2_count,f3_count,采用com.alibaba.fastjson的API将聚合结果SearchResponse转换为JSONObject并取出aggregations对象,得到json格式的待转换数据aggs。4.如权利要求3所述的方法,其特征在于,步骤二中递归取值过程中,已知条件为:(a)待转换数据,JSON格式的aggs(b)聚合字段,为f1、f2、f3递归取值过程使用java语言实现的方法如下:(1)使用一个变量level作为类指针使用,同时记录当前层数与当前层数变量名的作用,方法参数分别为(JSONObjectaggs,String[]fields,Integerlevel,Stringkeys,Map<String,String>rst),依次代表:①提取和转换数据类型的聚合结果aggs;②已定义...
【专利技术属性】
技术研发人员:胡佳,石波,李志强,谢小明,丁卫星,徐晶,刘建道,
申请(专利权)人:北京计算机技术及应用研究所,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。