CN116719821A - 一种并发数据插入Elasticsearch的排重方法、装置及存储介质 - Google Patents
一种并发数据插入Elasticsearch的排重方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116719821A CN116719821A CN202310993160.XA CN202310993160A CN116719821A CN 116719821 A CN116719821 A CN 116719821A CN 202310993160 A CN202310993160 A CN 202310993160A CN 116719821 A CN116719821 A CN 116719821A
- Authority
- CN
- China
- Prior art keywords
- data
- concurrent data
- concurrent
- verification value
- elastic search
- 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.)
- Granted
Links
- 238000003780 insertion Methods 0.000 title claims abstract description 49
- 230000037431 insertion Effects 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012795 verification Methods 0.000 claims abstract description 79
- 238000012545 processing Methods 0.000 claims description 15
- 230000008030 elimination Effects 0.000 claims description 10
- 238000003379 elimination reaction Methods 0.000 claims description 10
- 230000003111 delayed effect Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 6
- 238000013473 artificial intelligence Methods 0.000 abstract description 2
- 238000010295 mobile communication Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 229920001971 elastomer Polymers 0.000 description 4
- 239000000806 elastomer Substances 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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
-
- 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
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种并发数据插入Elasticsearch的排重方法、装置及存储介质,属于移动通信领域以及人工智能领域;其中包括:获取客户端,客户端发送并发请求到服务端,服务端根据并发要求将所述并发数据上传给消息队列;在服务端部署所述消息队列的消费端,其中消费端接收消息队列中的并发数据,并根据并发数据生成MD5验证值;使用MD5验证值查询mongodb,确认是否有重复数据,若并发数据为重复数据,删除MD5验证值对应的并发数据;若MD5验证值对应的并发数据不为重复数据,将MD5验证值插入到mongodb数据库中,并将MD5验证值对应的并发数据插入Elasticsearch索引,解决了在数据插入过程中数据重复的问题。
Description
技术领域
本发明属于移动通信领域以及人工智能领域,尤其涉及一种并发数据插入Elasticsearch的排重方法、装置及存储介质。
背景技术
现阶段针对于处理大并发写入一般采用消息队列+流式技术将数据批量写入存储,即采用kafka+flink对数据进行批量写入存储,但kafka的设计标准是每百万条数据可以丢失一条,存在数据丢失的现象;同时flink一般限定在hadoop集群中执行,应用范围较小。同时现阶段Elasticsearch使用document_id进行去重的字段处理,存在效率和速度低下的问题,同时考虑到Elasticsearch涉及查询、更新、合并和重建索引,在数据量超大的情况,使用document_id进行去重会对Elasticsearch集群性能造成比较大的影响。
发明内容
为了至少在一定程度上克服相关技术中数据批量写入存储存在数据丢失以及在数据去重方面,并没有考虑到效率和速度的问题,本申请提供了一种并发数据插入Elasticsearch的排重方法、装置及存储介质。
本申请的方案如下:
根据本公开实施例的一方面,提供了一种并发数据插入Elasticsearch的排重方法,包括:
步骤S1、获取客户端,所述客户端发送并发请求到服务端,所述服务端根据所述并发请求将并发数据上传给消息队列;
步骤S2、通过消费端接收所述消息队列中的所述并发数据,并根据所述并发数据生成MD5验证值;
步骤S3、所述服务端根据所述MD5验证值查询mongodb数据库,若所述MD5验证值对应的并发数据为重复数据,则删除所述MD5验证值对应的并发数据;若所述MD5验证值对应的并发数据不为重复数据,将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引;
步骤S4、判断所述并发数据插入Elasticsearch索引是否成功,当所述并发数据插入Elasticsearch索引成功时,完成数据插入操作。
根据本公开实施例的另一方面,判断所述并发数据插入Elasticsearch索引是否成功,还包括:
当所述并发数据插入Elasticsearch索引失败时,将所述并发数据重新上传到消息队列,并改用延时消费队列方式,延迟将所述并发数据插入Elasticsearch索引。
根据本公开实施例的另一方面,所述服务端根据所述并发请求将并发数据上传给消息队列,包括:
所述消息队列中将所述消息队列的处理方式从同步处理更改为异步处理;
其中,所述消息队列引入rabbitmq,当所述并发数据通过所述客户端发送所述并发请求到所述服务端,所述服务端先根据所述并发要求将所述并发数据上传给消息队列,并通知所述客户端,告知所述客户端所述并发信息已经在处理,所述客户端可以继续提交并发数据给服务器,不需要等待数据添加到 Elasticsearch以后在请求,即将所述消息队列的处理方式从同步处理更改为异步处理。
根据本公开实施例的另一方面,所述mongodb数据库包括:
第一集合,所述第一集合中只存在一个主键字段,应用于保存所述MD5验证值。
根据本公开实施例的另一方面,所述服务端根据所述MD5验证值查询mongodb数据库,包括:
所述mongodb数据库应用于判断所述并发数据是否重复;
在所述并发数据插入Elasticsearch索引之前,根据所述并发数据生成MD5验证值;
查询所述mongodb数据库中是否存在所述MD5验证值;
若存在所述MD5验证值,所述MD5验证值对应的并发数据是重复数据,则删除所述MD5验证值对应的并发数据;
若不存在所述MD5验证值,所述MD5验证值对应的并发数据不是重复数据,则将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引。
根据本公开实施例的另一方面,所述延时消费队列包括:
所述延时消费队列用于存放需要在指定时间被处理的元素的队列;
当所述并发数据插入Elasticsearch索引失败时,将所述并发数据重新上传到延时消费队列,所述延时消费队列的消费端接收所述并发数据并根据时间周期直接插入Elasticsearch索引。
根据本公开实施例的另一方面,所述延时消费队列中的时间周期为10分钟。
根据本公开实施例的一方面,提供了一种并发数据插入Elasticsearch的排重装置,其特征在于,包括:
并发数据上传模块:获取客户端,所述客户端发送并发请求到服务端,所述服务端根据所述并发要求将所述并发数据上传给消息队列;
MD5验证值获取模块:在所述服务端部署所述消息队列的消费端,其中所述消费端接收所述消息队列中的所述并发数据,并根据所述并发数据生成MD5验证值;
并发数据插入Elasticsearch索引模块:所述服务端根据所述MD5验证值查询mongodb数据库,若所述MD5验证值对应的并发数据为重复数据,则不将所述MD5验证值对应的并发数据插入Elasticsearch索引,并删除所述MD5验证值对应的并发数据;若所述MD5验证值对应的并发数据不为重复数据,将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引;
延时消费队列模块:当所述并发数据插入Elasticsearch索引成功时,完成数据插入操作;当所述并发数据插入Elasticsearch索引失败时,返回步骤S1,将所述并发数据重新上传到消息队列,并改用延时消费队列方式,延迟将所述并发数据插入Elasticsearch索引。
根据本公开实施例的一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,处理器执行所述计算机程序,实现上述任一项所述的并发数据插入Elasticsearch的排重方法。
本申请提供的技术方案可以包括以下有益效果:
本公开实施例引入了rabbitmq解决并发问题,其中当数据通过客户端并发请到服务端的时候,服务端先将数据写入到消息队列中,然后直接放回客户端,通知客户端,告知客户端该信息已经在处理,客户端可以继续提交信息给服务器,不需要等待数据添加到Elasticsearch 以后在请求,相当于把并发数据改为异步数据写入;同时引入mongodb解决数据重复问题,并且在Elasticsearch 写入失败以后,使用rabbitmq的延时队列进行数据补偿机制,确保了并发数据可以100%的插入到数据库中,不会丢数据的现象,同时摒弃了传统的hadoop 集群,大大降低硬件成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现阶段数据插入Elasticsearch索引的流程示意图;
图2是现阶段数据插入Elasticsearch索引领域的网络结构图;
图3是本公开实施例中一种并发数据插入Elasticsearch的排重方法的流程示意图;
图4是本公开实施例中一种并发数据插入Elasticsearch的排重方法的方法示意图;
图5是本公开实施例中一种并发数据插入Elasticsearch的排重方法中实现数据去重以及防止数据丢失的改造框架图;
图6是本公开实施例中一种并发数据插入Elasticsearch的排重装置的装置示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将对本公开实施例的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
本公开实施例中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
Elasticsearch(弹性搜索)是一个分布式、高扩展、高实时的搜索与数据分析引擎,能够实现方便的使大量数据具有搜索、分析和探索的能力。其中,Elasticsearch的实现原理主要分为:用户将数据提交到Elasticsearch数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
但是Elasticsearch在大并发,有重复数据、现存数据量大的时候,容易出现数据重复、数据插入失败等问题,具体表现如下:
情况1:Elasticsearch插入更新数据存在插入延迟的影响,导致数据重复插入的情况;
其中,现阶段数据插入Elasticsearch索引的流程示意图如图1所示,当Elasticsearch插入数据以后,数据不会第一时间保存在硬盘上,而是先保存在内存中,然后批量写入到硬盘上,造成了数据实际插入延时,数据在内存中时,无法第一时间查询到。其中,所述的插入延时的时间最长会有1秒,因此造成了重复数据也会被存储到Elasticsearch数据库中。
并且Elasticsearch写入是一个漫长的过程,其中现阶段数据插入Elasticsearch索引领域的网络结构图如图2所示,具体表现如下:
首先获取数据文档,并根据数据文档编号获取文档版本信息,根据文档版本信息判断文档是否存在,如果不存在进行添加操作,如果文件存在进行更新操作;
之后写入Luncene(全文搜索引擎),其中所述Lucene是用于全文检索和搜寻的开源诚实库,在写入Lucene的过程中只写入内存,会定期进行成组递交到磁盘生成新片段;
最后Elasticsearch会将每次写入数据同时写到translog日志中,防止Elasticsearch宕机造成数据丢失保证可靠存储。
情况2:会出现多个线程同时写入同样的数据或者部分数据相同的情况;
其中,Elasticsearch会先把数据写入内存,这时候如果查询数据,是无法获取到数据是否存在重复,即使采取根据记录中不同的字段,相同的数据生成相同的document_id(文档唯一编码),也会对数据库造成大量的更新合并、重建索引的情况,使得每次插入更新效率低下,速度非常慢。
情况3:Elasticsearch单个分片如果超过50G写入延时会急剧增加,数据量大了以后需要考虑分片策略。
情况4:高并发的时候,在写入数据的过程中,数据除了重复,还会出现数据写入失败的情况。
对此,为了至少在一定程度上克服相关技术中数据批量写入存储存在数据丢失以及在数据去重方面,并没有考虑到效率和速度的问题,本申请提供了一种并发数据插入Elasticsearch的排重方法,其中本公开实施例中一种并发数据插入Elasticsearch的排重方法的流程示意图如图3所示、本公开实施例中一种并发数据插入Elasticsearch的排重方法的方法示意图如图4所示,包括:
步骤S1、获取客户端,所述客户端发送并发请求到服务端,所述服务端根据所述并发要求将所述并发数据上传给消息队列;
步骤S2、在所述服务端部署所述消息队列的消费端,其中所述消费端接收所述消息队列中的所述并发数据,并根据所述并发数据生成MD5( Message-Digest Algorithm,密码散列函数,用于确保信息传输完整一致)验证值;
步骤S3、所述服务端根据所述MD5验证值查询mongodb数据库(基于分布式文件存储的数据库),若所述MD5验证值对应的并发数据为重复数据,则不将所述MD5验证值对应的并发数据插入Elasticsearch索引,并删除所述MD5验证值对应的并发数据;若所述MD5验证值对应的并发数据不为重复数据,将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引;
步骤S4、当所述并发数据插入Elasticsearch索引成功时,完成数据插入操作;当所述并发数据插入Elasticsearch索引失败时,返回步骤S1,将所述并发数据重新上传到消息队列,并改用延时消费队列方式,延迟将所述并发数据插入Elasticsearch索引。
综上所述,本公开实施例对现阶段并发数据插入Elasticsearch索引的过程进行了改造,其中本公开实施例中一种并发数据插入Elasticsearch的排重方法中实现数据去重以及防止数据丢失的改造框架图如图5所示;
其中,本公开实施例引入了rabbitmq(开源消息代理软件),实现了当数据通过客户端并发请到服务端的时候,服务端先将数据写入到消息队列中,然后直接放回客户端,通知客户端,告知客户端该信息已经在处理,客户端可以继续提交信息给服务器,不需要等待数据添加到 elasticsearch 以后在请求,相当于把并发数据改为异步数据写入,解决了并发问题;
引入了mongodb,在mongodb 中增加一个集合,里面只一个主键字段,保存需要插入到 Elasticsearch中的并发数据的MD5验证值,并判断所述mongodb 库中是否存在该值,判断数据是否重复,并丢弃重复数据,解决了数据重复问题;
引入了rabbitmq的延时消费队列,当插入失败的时候,作为补偿机制,使用rabbitmq的延时队列,将没有插入成功的数据放到延时队列中,确保了数据可以100%插入到数据库中,不会丢失数据的情况。
一种可能的实施例中,所述mongodb数据库应用于判断所述并发数据是否重复,包括:
在所述并发数据插入Elasticsearch索引之前,根据所述并发数据生成MD5验证值;
查询所述mongodb数据库中是否存在所述MD5验证值;
若存在所述MD5验证值,所述MD5验证值对应的并发数据是重复数据,可以丢弃;
若不存在所述MD5验证值,所述MD5验证值对应的并发数据不是重复数据。
一种可能的实施例中,所述延时消费队列包括:
所述延时消费队列用于存放需要在指定时间被处理的元素的队列;
当所述并发数据插入Elasticsearch索引失败时,将所述并发数据重新上传到延时消费队列,所述延时消费队列的消费端接收所述并发数据并时间周期直接插入Elasticsearch索引。
其中,针对于延时消费队列,具体如下:
延时消费队列,首先,它是一种队列,意味着内部的元素是有序的,元素出队和入队是有方向性的,元素从一端进入,从另一端取出;
其次,延时消费队列,最重要的特性就体现在它的延时属性上,跟普通的队列不一样的是,普通队列中的元素总是等着希望被早点取出处理,而延时消费队列中的元素则是希望被在指定时间得到取出和处理,所以延时消费队列中的元素是都是带时间属性的,通常来说是需要被处理的消息或者任务;
因此,延时消费队列就是用来存放需要在指定时间被处理的元素的队列,其中延时消费队列一般使用场景用在,例如订单在十分钟之内未支付则自动取消;
本公开实施例中,则是早延时消费队列设置时间周期,其中所述时间周期为10分钟,即出入并发数据后,10分钟以后再消费数据,可以很好的避开高并发数据拥堵的情况,其中本发明对时间周期的时长并不做限制,设定所述延时消费队列中的时间周期为10分钟仅因为可以很好的避开高并发数据拥堵的情况;
并且,延时消费队列的消费端收到延时消费队列的并发数据,会直接插入到elasticsearch中,不会再经过mongodb确认是否重复,同样也确保了插入并发数据的准确性,避免了重复插入数据的情况。
根据本公开实施例的一方面,提供了一种并发数据插入Elasticsearch的排重装置,如图6所示,包括:
并发数据上传模块601:获取客户端,所述客户端发送并发请求到服务端,所述服务端根据所述并发要求将所述并发数据上传给消息队列;
MD5验证值获取模块602:在所述服务端部署所述消息队列的消费端,其中所述消费端接收所述消息队列中的所述并发数据,并根据所述并发数据生成MD5验证值;
并发数据插入Elasticsearch索引模块603:所述服务端根据所述MD5验证值查询mongodb数据库,若所述MD5验证值对应的并发数据为重复数据,则不将所述MD5验证值对应的并发数据插入Elasticsearch索引,并删除所述MD5验证值对应的并发数据;若所述MD5验证值对应的并发数据不为重复数据,将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引;
延时消费队列模块604:当所述并发数据插入Elasticsearch索引成功时,完成数据插 入操作;当所述并发数据插入Elasticsearch索引失败时,返回步骤S1,将所述并发数据重新上传到消息队列,并改用延时消费队列方式,延迟将所述并发数据插入Elasticsearch索引。
根据本公开实施例的一方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,处理器执行所述计算机程序,实现上述任一项所述的并发数据插入Elasticsearch的排重方法。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开实施例中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现公开实施例公开的技术方案所期望的结果,本公开在此不进行限制。
上述具体实施方式,并不构成对本公开实施例保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开实施例的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开实施例保护范围之内。
Claims (9)
1.一种并发数据插入Elasticsearch的排重方法,其特征在于,包括:
步骤S1、获取客户端,所述客户端发送并发请求到服务端,所述服务端根据所述并发请求将并发数据上传给消息队列;
步骤S2、通过消费端接收所述消息队列中的所述并发数据,并根据所述并发数据生成MD5验证值;
步骤S3、所述服务端根据所述MD5验证值查询mongodb数据库,若所述MD5验证值对应的并发数据为重复数据,则删除所述MD5验证值对应的并发数据;若所述MD5验证值对应的并发数据不为重复数据,将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引;
步骤S4、判断所述并发数据插入Elasticsearch索引是否成功,当所述并发数据插入Elasticsearch索引成功时,完成数据插入操作。
2.根据权利要求1所述的方法,其特征在于,判断所述并发数据插入Elasticsearch索引是否成功,还包括:
当所述并发数据插入Elasticsearch索引失败时,将所述并发数据重新上传到消息队列,并改用延时消费队列方式,延迟将所述并发数据插入Elasticsearch索引。
3.根据权利要求1所述的方法,其特征在于,所述服务端根据所述并发请求将并发数据上传给消息队列,包括:
所述消息队列中将所述消息队列的处理方式从同步处理更改为异步处理;
其中,所述消息队列引入rabbitmq,当所述并发数据通过所述客户端发送所述并发请求到所述服务端,所述服务端先根据所述并发要求将所述并发数据上传给消息队列,并通知所述客户端,告知所述客户端所述并发信息已经在处理,所述客户端可以继续提交并发数据给服务器,不需要等待数据添加到 Elasticsearch以后在请求,即将所述消息队列的处理方式从同步处理更改为异步处理。
4.根据权利要求1所述的方法,其特征在于,所述mongodb数据库包括:
第一集合,所述第一集合中只存在一个主键字段,应用于保存所述MD5验证值。
5.根据权利要求4所述的方法,其特征在于,所述服务端根据所述MD5验证值查询mongodb数据库,包括:
所述mongodb数据库应用于判断所述并发数据是否重复;
在所述并发数据插入Elasticsearch索引之前,根据所述并发数据生成MD5验证值;
查询所述mongodb数据库中是否存在所述MD5验证值;
若存在所述MD5验证值,所述MD5验证值对应的并发数据是重复数据,则删除所述MD5验证值对应的并发数据;
若不存在所述MD5验证值,所述MD5验证值对应的并发数据不是重复数据,则将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引。
6.根据权利要求2所述的方法,其特征在于,所述延时消费队列包括:
所述延时消费队列用于存放需要在指定时间被处理的元素的队列;
当所述并发数据插入Elasticsearch索引失败时,将所述并发数据重新上传到延时消费队列,所述延时消费队列的消费端接收所述并发数据并根据时间周期直接插入Elasticsearch索引。
7.根据权利要求6所述的方法,其特征在于,所述延时消费队列中的时间周期为10分钟。
8.一种并发数据插入Elasticsearch的排重装置,其特征在于,包括:
并发数据上传模块:获取客户端,所述客户端发送并发请求到服务端,所述服务端根据所述并发要求将所述并发数据上传给消息队列;
MD5验证值获取模块:在所述服务端部署所述消息队列的消费端,其中所述消费端接收所述消息队列中的所述并发数据,并根据所述并发数据生成MD5验证值;
并发数据插入Elasticsearch索引模块:所述服务端根据所述MD5验证值查询mongodb数据库,若所述MD5验证值对应的并发数据为重复数据,则不将所述MD5验证值对应的并发数据插入Elasticsearch索引,并删除所述MD5验证值对应的并发数据;若所述MD5验证值对应的并发数据不为重复数据,将所述MD5验证值插入到所述mongodb数据库中,并将所述MD5验证值对应的并发数据插入Elasticsearch索引;
延时消费队列模块:当所述并发数据插入Elasticsearch索引成功时,完成数据插入操作;当所述并发数据插入Elasticsearch索引失败时,返回步骤S1,将所述并发数据重新上传到消息队列,并改用延时消费队列方式,延迟将所述并发数据插入Elasticsearch索引。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,处理器执行所述计算机程序,实现如权利要求1-7中任一项所述的并发数据插入Elasticsearch的排重方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310993160.XA CN116719821B (zh) | 2023-08-09 | 2023-08-09 | 一种并发数据插入Elasticsearch的排重方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310993160.XA CN116719821B (zh) | 2023-08-09 | 2023-08-09 | 一种并发数据插入Elasticsearch的排重方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116719821A true CN116719821A (zh) | 2023-09-08 |
CN116719821B CN116719821B (zh) | 2023-10-10 |
Family
ID=87864741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310993160.XA Active CN116719821B (zh) | 2023-08-09 | 2023-08-09 | 一种并发数据插入Elasticsearch的排重方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116719821B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799860A (zh) * | 2021-01-27 | 2021-05-14 | 浪潮云信息技术股份公司 | 基于消息队列和搜索引擎实现服务回调的方法 |
US20210365296A1 (en) * | 2020-05-19 | 2021-11-25 | EMC IP Holding Company LLC | Systems and methods for controller-worker architecture for searching a storage system |
CN113986942A (zh) * | 2021-12-28 | 2022-01-28 | 零犀(北京)科技有限公司 | 一种基于人机对话的消息队列管理方法及装置 |
CN114254016A (zh) * | 2021-12-17 | 2022-03-29 | 北京金堤科技有限公司 | 基于弹性搜索的数据同步方法、装置、设备及存储介质 |
CN115729465A (zh) * | 2022-11-01 | 2023-03-03 | 中国电信股份有限公司 | 一种基于段落小文件存储的文档解耦与合成系统 |
-
2023
- 2023-08-09 CN CN202310993160.XA patent/CN116719821B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210365296A1 (en) * | 2020-05-19 | 2021-11-25 | EMC IP Holding Company LLC | Systems and methods for controller-worker architecture for searching a storage system |
CN112799860A (zh) * | 2021-01-27 | 2021-05-14 | 浪潮云信息技术股份公司 | 基于消息队列和搜索引擎实现服务回调的方法 |
CN114254016A (zh) * | 2021-12-17 | 2022-03-29 | 北京金堤科技有限公司 | 基于弹性搜索的数据同步方法、装置、设备及存储介质 |
CN113986942A (zh) * | 2021-12-28 | 2022-01-28 | 零犀(北京)科技有限公司 | 一种基于人机对话的消息队列管理方法及装置 |
CN115729465A (zh) * | 2022-11-01 | 2023-03-03 | 中国电信股份有限公司 | 一种基于段落小文件存储的文档解耦与合成系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116719821B (zh) | 2023-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106484877B (zh) | 一种基于hdfs的文件检索系统 | |
CN103020315B (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
US9619491B2 (en) | Streamlined system to restore an analytic model state for training and scoring | |
US20190236201A1 (en) | Techniques for processing database tables using indexes | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN103617199A (zh) | 一种操作数据的方法和系统 | |
US11520759B2 (en) | Processing time series metrics data | |
US20190057027A1 (en) | Key Data Store Garbage Collection and Multipart Object Management | |
CN116108057B (zh) | 一种分布式数据库访问方法、装置、设备及存储介质 | |
US9390131B1 (en) | Executing queries subject to different consistency requirements | |
US11210212B2 (en) | Conflict resolution and garbage collection in distributed databases | |
WO2017156855A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
Yan et al. | Hmfs: efficient support of small files processing over HDFS | |
CN112334891A (zh) | 用于搜索服务器的集中式存储 | |
CN116719821B (zh) | 一种并发数据插入Elasticsearch的排重方法、装置及存储介质 | |
CN108121807B (zh) | Hadoop环境下多维索引结构OBF-Index的实现方法 | |
CN110109866B (zh) | 一种文件系统目录的管理方法及设备 | |
CN111290700A (zh) | 分布式数据读写方法和系统 | |
CN114063931A (zh) | 一种基于大数据的数据存储方法 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
KR101299555B1 (ko) | 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 | |
Naeem et al. | Optimising hybridjoin to process semi-stream data in near-real-time data warehousing | |
CN106776772B (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 |