CN114741434B - 一种海量es搜索数据的预统计方法及系统 - Google Patents
一种海量es搜索数据的预统计方法及系统 Download PDFInfo
- Publication number
- CN114741434B CN114741434B CN202210649698.4A CN202210649698A CN114741434B CN 114741434 B CN114741434 B CN 114741434B CN 202210649698 A CN202210649698 A CN 202210649698A CN 114741434 B CN114741434 B CN 114741434B
- Authority
- CN
- China
- Prior art keywords
- data
- statistical
- time
- day
- node
- 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
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- 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/2246—Trees, e.g. B+trees
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机数据处理技术领域,公开了一种海量ES搜索数据的预统计方法,包括将统计开始时程序上下文的状态变量和环境变量保存至当前线程中;获取下一统计任务,将统计任务按照统计维度划分为若干组,分组进行查询,获得树形结构的ES聚合结果;遍历树形结构的ES聚合结果,根据树形结构中每个节点的Node对象中的描述,获取该节点的父节点信息,并将ES聚合结果的全部信息进行保存;通过一张模版表动态的创建天表、周表和月表,将ES聚合结果的全部信息按照时间划分到天表、周表和月表中;更新上下文的状态变量和环境变量并持久化。本发明提高了海量数据统计分析效能,降低对系统资源的使用,保证数据准确可靠,提供良好扩展性。
Description
技术领域
本发明涉及计算机数据处理技术领域,特别涉及一种海量ES搜索数据的预统计方法及系统。
背景技术
许多企业都会对自身数据进行统计分析,例如统计客户的年龄分布,统计各类商品的订单数量等。通常对小批量数据进行统计分析的方法是直接聚合查询,对中等规模数据量进行统计分析的方法是事先根据业务需求将聚合结果存储到一张统计表中,查询时直接查询这张统计表。
随着业务的发展数据量越来越多,直接聚合查询很快就无法满足快速响应的需求。即使采用事先统计聚合结果的方案,当数据量膨胀到一定程度,例如一天超过数亿甚至数十亿规模时,在复杂的业务场景下每天聚合后的数据仍可能有超过百万的数据量,随着时间推移,统计表的数量也会不断增加。例如公开号为CN111460333A的中国专利申请,公开了一种实时搜索数据分析系统,利用流式计算大数据技术分析统计垂直搜索引擎产生的搜索行为数据,并提供可视化展示。但当单表数据达到千万级别后,通常会由于查询的结果集分布在大量数据页上导致内存占用增加,而在不同用户的并发请求下造成数据页缓存频繁淘汰从而加大磁盘的输入输出,使得数据处理能力急剧下降,系统响应时间大幅增长,对用户带来不好的体验,所以海量数据查询处理的问题函待解决。
发明内容
鉴于现有技术中的上述缺陷或不足,本发明提供了一种海量ES搜索数据的预统计方法及系统,在提高海量数据下统计分析效能的同时,降低了对系统资源的使用,保证了数据的准确可靠,同时提供了良好的扩展性。
本发明的一个方面提供了一种海量ES搜索数据的预统计方法,包括:
将每次统计开始时程序上下文的状态变量和环境变量保存至当前线程中;
获取下一统计任务,将统计任务按照统计维度划分为若干组,分组进行查询,获得树形结构的ES聚合结果;
遍历上述树形结构的ES聚合结果,根据树形结构中的每个节点的Node对象中的描述,获取该节点的父节点的信息,并将ES聚合结果的全部信息进行保存;
通过一张模版表动态的创建天表、周表和月表,将ES聚合结果的全部信息按照时间划分到该天表、周表和月表中;
更新上下文的状态变量和环境变量并持久化。
进一步的,若统计任务为统计实时数据,则每次统计的时间间隔为一个小时,并将本次统计的数据标记为临时数据,在下次统计前,将该临时数据删除,并重新统计一小时内的数据;
若统计任务为统计历史数据,则每次统计的时间间隔为一个小时,下次统计时直接跳转至下一小时。
进一步的,还包括:若历史数据距离当前时间小于ES搜索数据写入磁盘存储文件的时间,则将预统计线程挂起等待。
进一步的,上述将ES聚合结果的全部信息按照时间划分到天表、周表和月表中的步骤具体包括:
将ES聚合结果的全部信息保存为天表,该天表包括以小时为单位聚合的数据;将该天表中的数据同步至周表和月表中,周表和月表包括以天为单位聚合的数据。
进一步的,还包括:将时间和各统计维度计算出的MD5值组合成索引,在将上述天表中的数据同步至周表和月表的过程中,利用该索引做批量的更新插入操作。
本发明的另一方面,还提供了一种海量ES搜索数据的预统计系统,包括:
第一模块,被配置为将每次统计开始时程序上下文的状态变量和环境变量保存至当前线程中;
第二模块,被配置为获取下一统计任务,将统计任务按照统计维度划分为若干组,分组进行查询,获得树形结构的ES聚合结果;
第三模块,被配置为遍历上述树形结构的ES聚合结果,根据树形结构中的每个节点的Node对象中的描述,获取该节点的父节点的信息,并将ES聚合结果的全部信息进行保存;
第四模块,被配置为通过一张模版表动态的创建天表、周表和月表,将ES聚合结果的全部信息按照时间划分到该天表、周表和月表中;
第五模块,被配置为更新上下文的状态变量和环境变量并持久化。
进一步的,若统计任务为统计实时数据,则每次统计的时间间隔为一个小时,并将本次统计的数据标记为临时数据,在下次统计前,将该临时数据删除,并重新统计一小时内的数据;
若统计任务为统计历史数据,则每次统计的时间间隔为一个小时,下次统计时直接跳转至下一小时。
进一步的,还包括:
第六模块,被配置为若历史数据距离当前时间小于ES搜索数据写入磁盘存储文件的时间,则将预统计线程挂起等待。
进一步的,上述第四模块被进一步配置为:
将ES聚合结果的全部信息保存为天表,天表包括以小时为单位聚合的数据;将天表中的数据同步至周表和月表中,周表和月表包括以天为单位聚合的数据。
进一步的,上述第四模块被进一步配置为:
将时间和各统计维度计算出的MD5值组合成索引,在将天表中的数据同步至周表和月表的过程中,利用该索引做批量的更新插入操作。
本发明提供的一种海量ES搜索数据的预统计方法及系统,其能够根据业务整理合并需要聚合的维度,这样本发明的方法保存的就不再是最终结果而是一种中间结果,为以后分析的扩充提供良好的扩展性。同时,为了解决单表体积过大的问题,本发明将数据按时间划分到不同的表中,共设计了天表、周表、月表三种类型的表,通过一张模板表动态的创建,这样在兼顾扩展性的同时,解决了单表体积过大及跨表查询的问题。此外,合理的表结构及索引设计保证了本发明预统计方法能够快速高效的运行。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请一个实施例提供的一种海量ES搜索数据的预统计方法的流程图;
图2是本申请一个实施例提供的一种海量ES搜索数据的预统计系统的结构图;
图3是本申请一个实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”“所述”和“该”也旨在包括多数形式,除非上下文清楚的表示其他含义。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述获取模块,但这些获取模块不应限于这些术语。这些术语仅用来将获取模块彼此区分开。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似的,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要注意的是,本发明实施例所描述的“上”“下”“左”“右”等方位词是以附图所示的角度来进行描述的,不应理解为对本发明实施例的限定。此外在上下文中,还需要理解的是,当提到一个元件被形成在另一个元件“上”或“下”时,其不仅能够直接形成在另一个元件“上”或者“下”,也可以通过中间元件间接形成在另一元件“上”或者“下”。
Elaticsearch,简称为ES,是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据,本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。ES也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能。同时,Elasticsearch 也是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤:首先,用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名、打分,再将返回结果呈现给用户。
海量ES数据聚合最重要的是解决效率问题,包括数据的处理效率、磁盘的写入效率以及因统计表数据的不断增加而产生影响的查询效率。此外,统计是一个异步处理的行为,因此需要保证统计数据的正确可靠,保证异常行为发生后(如异常断电、ES故障),双方数据的一致性。还要解决其他可能存在的问题,例如内存溢出、gc(垃圾回收机制)、资源释放、并发安全等问题。
为了解决上述技术问题,本申请的一个实施例提供了一种海量ES搜索数据的预统计方法,以下简称为预统计方法。为了防止预统计的操作影响到主线程的退出,本发明使用了一个后台线程来进行处理。该线程支持Java的中断机制,可被其他线程设置中断状态,由于java中断属于一种协作机制,只有当预统计线程每次统计开始时才会主动去检测中断标志位,一旦发现中断便退出线程,在系统资源紧缺的情况下释放所占用的大量资源同时,保证数据的一致性。
在本发明的预统计程序/软件方法首次运行时,会根据机器的内存配置动态地设置ES搜索引擎的参数,保证不同机器配置下ES都有一个相对合适的配置。预统计提供了重置的功能,当需要时通过插入特定的语句,预统计即可在每次统计时检测并重置。在统计完成后,预统计线程会挂起一段时间,保证线程不会持续地占用系统资源,不同场景下(例如正常完成、发生异常、重置完成)挂起的时间会有所不同。
本发明的预统计方法会将需要聚合的维度根据业务进行整理合并,例如我们要统计不同年龄下的性别分布和不同地域下的性别分布,可以将其合并为不同年龄下不同地域的性别分布,这样预统计方法保存的不再是最终结果而是一种中间结果,可以为以后分析的扩充提供良好的扩展性。而为解决单表体积过大的问题,本发明的预统计方法将数据按时间划分到不同的表中,例如:天表、周表、月表三种类型的表,通过一张模板表动态的创建,其中天表保存的是以一小时为单位聚合的数据,周表与月表均是以一天为单位进行聚合的数据。这样在兼顾扩展性的同时,解决了单表体积过大及跨表查询的问题。
为防止因为断电等意外导致的数据不一致问题,本发明的预统计方法选用支持事务的mysql数据库进行存储,由于预统计最核心的是天表、周表、月表,因此对这些表的维护及其结构设计就尤为重要。本发明的预统计方法设计了一张表用来记录这些表的状态信息,例如本次有哪些表新插入了数据、插入数据的类型是什么等等。在表结构设计上,主键采用自增主键,一方面节约磁盘空间,另一方面,使数据行的插入由随机IO变更为顺序IO,防止数据页的分裂,提高了效率。对于其他字段,在长度满足需求的情况下选用空间占用尽可能小的类型,例如一些枚举值用tinyint(4)存储,一些定长内容如id、MD5等采用char类型。同时设计了一些索引,在提高查询效率,减少锁冲突等方面均有良好的表现。
具体的,参见图1,本发明的海量ES搜索数据的预统计方法包括如下步骤:
步骤S101,将每次统计开始时程序上下文的状态变量和环境变量保存至当前线程中。
具体的,每次开始统计时,会先初始化预统计程序的上下文,上下文中记录了预统计程序运行时的状态及其相关环境变量,每当事务提交之前,就会对其进行持久化,以便发生意外重启后跳过已完成的事务,防止事务的重复执行。需要注意的是,预统计程序上下文决定了预统计方法的整个执行过程,对其的改变应该由预统计线程来决定,因此本发明在初始化上下文之后会将其通过ThreadLocal保存到预统计线程中,在方便获取上下文的同时,将其封闭在线程内部,不暴露给其他线程,保证了安全性。
步骤S102,获取下一统计任务,将统计任务按照统计维度划分为若干组,分组进行查询,获得树形结构的ES聚合结果。
具体的,预统计线程可能会有多个统计任务,每个统计任务互相隔离互不影响,然而,一个统计也并不是一次完成,而是采用分治策略,将任务依据其中一个统计维度划分为若干组分批进行,一组一个事务。这样不但可以避免由于加载数据过多造成的资源不足问题,例如ES聚合桶数量超限、内存溢出等等,还可以减少mysql锁的占用时间,优化预统计运行过程中因占用的内存过大,在某些场景下对象被提前分配到老年代内存,使得full gc(即garbage collection的缩写,指垃圾收集,full gc清理年轻代和老年代内存,在老年代内存满时会触发)频率增加,系统吞吐下降的问题。
进一步的,本发明的预统计方法在一次统计任务中,统计一小时范围内的数据。当统计的是历史数据时,下一次统计会直接跳到下一小时。当统计的是实时数据时,会将该次统计的数据标记为临时数据,下次统计前将临时数据删除并重新统计这一小时的数据。直到过了这一小时,数据成为历史数据不再发生变化,才会在统计之后跳到下一小时。
需要注意的是,由于ES具有近实时的特性,写入ES的数据需要过一段时间才能查出来,为了保证查询时不丢数据,查询历史数据时必须保证历史数据已经写入磁盘,即历史数据距离当前时间至少大于ES写入磁盘存储文件translog的时间,否则的话线程需要挂起等待。
步骤S103,遍历树形结构的ES聚合结果,根据树形结构中的每个节点的Node对象中的描述,获取该节点的父节点的信息,并将ES聚合结果的全部信息进行保存。
具体的,该步骤用于将数据存储为预保存的结构。在ES聚合查询得到结果后,需要对数据进行处理,由于ES聚合结果是一个树形结构,其中的一条分支即为要保存到mysql中的一行数据,很容易发现一个叶子结点代表一条分支,但由于ES聚合树的特点是父节点存在指向子节点的引用,而子节点没有指向父节点的引用,即使遍历拿到叶子结点,也很难获取到其父节点。如果采取一般方法,时间复杂度或空间复杂度会比较高,随着数据的增长,消耗的时间或空间会呈几何倍的增长。本发明的预统计方法通过遍历聚合树,在遍历的过程中将节点包装进一个Node对象中,并构建一个指向父节点的引用,同时Node对象提供了一系列丰富的接口来描述当前节点。这样在遍历到叶子结点时,通过其Node对象可以很方便的获取父节点,时间复杂度和空间复杂度均为O(n),同时一定程度上保证了代码的扩展性和可读性。
步骤S104,通过一张模版表动态的创建天表、周表和月表,将ES聚合结果的全部信息按照时间划分到天表、周表和月表中。
具体的,为解决单表体积过大的问题,本发明的预统计方法将数据按时间划分到不同的表中,共设计了天表、周表、月表三种类型的表,通过一张模板表动态地创建,其中天表保存的是以一小时为单位聚合的数据,周表与月表均是以一天为单位进行聚合的数据。这样在兼顾扩展性的同时,解决了单表体积过大及跨表查询的问题。
将ES聚合结果的全部信息保存到天表后,预统计线程预留了接口提供拓展,同步数据到周表、月表,记录表状态均通过该接口实现。在天表数据同步到周表、月表过程中,由于周表、月表记录的是以一天为单位进行聚合的数据,不只有插入还涉及到数量的累加,为了提高效率,通过将时间、各维度计算的MD5值组合成一个唯一索引,在同步数据时利用该索引做批量的更新插入操作upsert,极大程度的简化业务逻辑并提升性能。
为防止数据不断增加导致磁盘占满,预统计方法提供了根据时间进行数据清理的接口,可通过其它线程异步执行。为了防止多线程操作同一张表时锁竞争问题,在时间字段上建立一个索引,从而减少线程阻塞的场景。
步骤S105,更新上下文的状态变量和环境变量并持久化(例如,写入磁盘保存等)。其中,状态变量包括统计数据的开始时间结束时间等。
本发明的预统计方法使统计数据分别入库到天表、周表、月表,同一数据分级使用,使得查询更便捷。通过数据清理机制保证磁盘空间充足。通过合理的表结构及索引设计保证预统计快速高效运行。通过时间复杂度和空间复杂度均为O(n)的数据处理方法减少时间及内存消耗。
参见图2,本发明的另一实施例还提供了一种海量ES搜索数据的预统计系统200,包括第一模块201、第二模块202、第三模块203、第四模块204和第五模块205。该预统计系统200能够执行方法实施例中的预统计方法。
具体的,预统计系统200包括:
第一模块201,被配置为将每次统计开始时程序上下文的状态变量和环境变量保存至当前线程中;
第二模块202,被配置为获取下一统计任务,将统计任务按照统计维度划分为若干组,分组进行查询,获得树形结构的ES聚合结果;
第三模块203,被配置为遍历所述树形结构的ES聚合结果,根据树形结构中的每个节点的Node对象中的描述,获取该节点的父节点的信息,并将ES聚合结果的全部信息进行保存;
第四模块204,被配置为通过一张模版表动态的创建天表、周表和月表,将ES聚合结果的全部信息按照时间划分到天表、周表和月表中;
第五模块205,被配置为更新上下文的状态变量和环境变量并持久化。
进一步的,若统计任务为统计实时数据,则每次统计的时间间隔为一个小时,并将本次统计的数据标记为临时数据,在下次统计前,将该临时数据删除,并重新统计一小时内的数据;若统计任务为统计历史数据,则每次统计的时间间隔为一个小时,下次统计时直接跳转至下一小时。
进一步的,还包括第六模块206,被配置为若历史数据距离当前时间小于ES搜索数据写入磁盘存储文件的时间,则将预统计线程挂起等待。
进一步的,上述第四模块204被进一步配置为:
将ES聚合结果的全部信息保存为天表,该天表包括以小时为单位聚合的数据;将该天表中的数据同步至周表和月表中,周表和月表包括以天为单位聚合的数据。
进一步的,上述第四模块204被进一步配置为:
将时间和各统计维度计算出的MD5值组合成索引,在将天表中的数据同步至周表和月表的过程中,利用该索引做批量的更新插入操作。
需要说明的是,本实施例提供的预统计系统200对应的可用于执行各方法实施例的技术方案,其实现原理和技术效果与方法类似,此处不再赘述。
图3为本发明实施例中用于实现一种海量ES搜索数据的预统计方法的一种电子设备的结构示意图。下面具体参考图3,其示出了适于用来实现本实施例中的电子设备300的结构示意图。本实施例中的电子设备300可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)、可穿戴电子设备等等的移动终端以及诸如台式计算机、服务器等等的固定终端。图3示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理以实现如本发明描述的各实施例的方法。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图3示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代的实施或具备更多或更少的装置。
以上描述仅为本发明的较佳实施例。本领域技术人员应当理解,本发明中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (6)
1.一种海量ES搜索数据的预统计方法,其特征在于,包括:
将每次统计开始时程序上下文的状态变量和环境变量保存至当前线程中;
获取下一统计任务,将统计任务按照统计维度划分为若干组,分组进行查询,获得树形结构的ES聚合结果;
遍历所述树形结构的ES聚合结果,根据树形结构中的每个节点的Node对象中的描述,获取该节点的父节点的信息,并将ES聚合结果的全部信息进行保存;
通过一张模版表动态的创建天表、周表和月表,将ES聚合结果的全部信息保存为天表,所述天表包括以小时为单位聚合的数据,将所述天表中的数据同步至周表和月表中,所述周表和月表包括以天为单位聚合的数据;将时间和各统计维度计算出的MD5值组合成索引,在将所述天表中的数据同步至周表和月表的过程中,利用所述索引做批量的更新插入操作;
更新上下文的状态变量和环境变量并持久化。
2.根据权利要求1所述的一种海量ES搜索数据的预统计方法,其特征在于:
若统计任务为统计实时数据,则每次统计的时间间隔为一个小时,并将本次统计的数据标记为临时数据,在下次统计前,将所述临时数据删除,并重新统计一小时内的数据;
若统计任务为统计历史数据,则每次统计的时间间隔为一个小时,下次统计时直接跳转至下一小时。
3.根据权利要求1所述的一种海量ES搜索数据的预统计方法,其特征在于,还包括:
若历史数据距离当前时间小于ES搜索数据写入磁盘存储文件的时间,则将预统计线程挂起等待。
4.一种海量ES搜索数据的预统计系统,其特征在于,包括:
第一模块,被配置为将每次统计开始时程序上下文的状态变量和环境变量保存至当前线程中;
第二模块,被配置为获取下一统计任务,将统计任务按照统计维度划分为若干组,分组进行查询,获得树形结构的ES聚合结果;
第三模块,被配置为遍历所述树形结构的ES聚合结果,根据树形结构中的每个节点的Node对象中的描述,获取该节点的父节点的信息,并将ES聚合结果的全部信息进行保存;
第四模块,被配置为通过一张模版表动态的创建天表、周表和月表,将ES聚合结果的全部信息保存为天表,所述天表包括以小时为单位聚合的数据,将所述天表中的数据同步至周表和月表中,所述周表和月表包括以天为单位聚合的数据;将时间和各统计维度计算出的MD5值组合成索引,在将所述天表中的数据同步至周表和月表的过程中,利用所述索引做批量的更新插入操作;
第五模块,被配置为更新上下文的状态变量和环境变量并持久化。
5.根据权利要求4所述的一种海量ES搜索数据的预统计系统,其特征在于:
若统计任务为统计实时数据,则每次统计的时间间隔为一个小时,并将本次统计的数据标记为临时数据,在下次统计前,将所述临时数据删除,并重新统计一小时内的数据;
若统计任务为统计历史数据,则每次统计的时间间隔为一个小时,下次统计时直接跳转至下一小时。
6.根据权利要求4所述的一种海量ES搜索数据的预统计系统,其特征在于,还包括:
第六模块,被配置为若历史数据距离当前时间小于ES搜索数据写入磁盘存储文件的时间,则将预统计线程挂起等待。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210649698.4A CN114741434B (zh) | 2022-06-10 | 2022-06-10 | 一种海量es搜索数据的预统计方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210649698.4A CN114741434B (zh) | 2022-06-10 | 2022-06-10 | 一种海量es搜索数据的预统计方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114741434A CN114741434A (zh) | 2022-07-12 |
CN114741434B true CN114741434B (zh) | 2022-09-06 |
Family
ID=82286863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210649698.4A Active CN114741434B (zh) | 2022-06-10 | 2022-06-10 | 一种海量es搜索数据的预统计方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114741434B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936551B1 (en) * | 2020-03-30 | 2021-03-02 | Qumulo, Inc. | Aggregating alternate data stream metrics for file systems |
WO2022083520A1 (zh) * | 2020-10-19 | 2022-04-28 | 华为技术有限公司 | 一种数据查询方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295279B (zh) * | 2007-04-29 | 2012-05-09 | 国际商业机器公司 | 多线程环境下的调试程序的方法和系统 |
CN106095424B (zh) * | 2016-06-07 | 2019-05-24 | 中国建设银行股份有限公司 | 应用组件中交易调用的处理方法和装置 |
CN112613271A (zh) * | 2020-12-28 | 2021-04-06 | 深圳壹账通创配科技有限公司 | 数据分页方法、装置、计算机设备及存储介质 |
CN113806438A (zh) * | 2021-11-19 | 2021-12-17 | 北京亿赛通网络安全技术有限公司 | 一种基于海量bcp数据文件的入库及预处理方法和系统 |
-
2022
- 2022-06-10 CN CN202210649698.4A patent/CN114741434B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936551B1 (en) * | 2020-03-30 | 2021-03-02 | Qumulo, Inc. | Aggregating alternate data stream metrics for file systems |
WO2022083520A1 (zh) * | 2020-10-19 | 2022-04-28 | 华为技术有限公司 | 一种数据查询方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114741434A (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200349205A1 (en) | Search infrastructure | |
CN107818115B (zh) | 一种处理数据表的方法及装置 | |
CN106557578B (zh) | 历史数据查询方法及系统 | |
EP3456360A1 (en) | Device and method for tuning relational database | |
CN102855309A (zh) | 一种基于用户行为关联分析的信息推荐方法及装置 | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
CN110765143B (zh) | 数据处理方法、装置、服务器和存储介质 | |
CN112307062B (zh) | 数据库聚合查询方法、装置及系统 | |
EP4109293A1 (en) | Data query method and apparatus, electronic device, storage medium, and program product | |
EP3063635A1 (en) | Asynchronous garbage collection in a distributed database system | |
CN109614270A (zh) | 基于Hbase的数据读写方法、装置、设备及存储介质 | |
Qi et al. | Big data management in digital forensics | |
CN114741434B (zh) | 一种海量es搜索数据的预统计方法及系统 | |
CN112473149A (zh) | 排行榜处理方法 | |
CN111666398A (zh) | 一种基于房源信息关键字搜索匹配的方法 | |
US20090249343A1 (en) | System, method, and computer program product for receiving timer objects from local lists in a global list for being used to execute events associated therewith | |
CN113821573A (zh) | 海量数据快速检索服务构建方法、系统、终端及存储介质 | |
CN115469810A (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN112540843B (zh) | 资源的分配方法、装置、存储设备及存储介质 | |
CN116628042A (zh) | 数据处理方法、装置、设备及介质 | |
CN115809015A (zh) | 分布式系统中数据处理的方法以及相关系统 | |
CN106776772B (zh) | 一种数据检索的方法及装置 | |
CN115718787B (zh) | 数据表数据同步方法、查询方法、电子设备及存储介质 | |
CN116090382B (zh) | 时序报告生成方法和设备 | |
CN113486021B (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 |