00:01
好了啊,那接下来我们就回到我们这个项目中了啊呃,之前我们已经把这个该做的工作呢,基本上都做完了啊,就差最后一步就是把数据呢写到这个ES中啊,我们的这个日活宽表以及我们这个订单宽表啊,都是只差最后一步啊,把数据写到ES来看一下这个代码啊呃,把这都关掉,关掉以后我们回到。我们的项目中啊展开。呃呃,在这个,诶。这是。啊,就他是吧。啊,过来啊。好,找到我们的这个日活还有一个订单啊看一下,那你看我这个日活动啊,最后我不就是把数据写到olp,然后我这个订单呢,也是一样的啊,把数据呢写到这个olp。对吧,那接下来我把这个完成一下啊,好,那么你要完成的话,我们来分析一下我们做什么事啊,首先呃,我们就先从这个日活来去说起啊,那你看啊,我把这个数据的话呢,都已经什么该处理好了啊,就该补充维度的补充维度,对吧,该去重的去重,最后呢,我都什么把数据处理完了,那我就需要从你的流中啊把数据呢读出来对吧?从流中呢把数据提出来,提出来以后呢,什么直接往你的ES中去写就可以了。
01:13
理解吧啊,往ES写就行了啊好,那我们这个要往ES写的话,你得规划清楚了哈,你往ES中的哪个索引中去写,是你整体写到一个索引中,还是说我们也要去做一个索引的分割。对吧,先把这个事想明白啊,那对于我们这个实时项目来讲,那肯定要什么分割索引呢,因为你每次统计都是统计什么呀,统计这个当天的数据,如果说你把这个数据呢,多天的数据都写到什么同一个索引中了,那你每次统计你还要怎么做这个数据的过滤,这个多麻烦呢。对吧,所以我们一定是什么做要做什么呀,做这个索引分割的啊,按照天的去做这个索引分割,那如果你要按照这个天做索引分割的话呢,那将来我们在建索引的时候,我就得每天都建一个索引,那如果说我每天都要去建索引的话,那我就要去考虑到这个建索引的时候,这个字段的一个什么类型的问题。
02:01
那你想到这个事以后,你应该就想到我们的索引的模板,我得用上了,对吧。好,同样将来你把这个数据呢,分到这个很多个这个索引中了,那如果说假设说我们突然想去统计一下一个周期的数据,比如说一个月或者什么半年的数据。对吧,那这个时候我们就需要什么呀。得有一个别名来帮助我们去简化这个操作了吧?对吧,说这个一分析啊,那你就能够分析出来,我们之前讲过的东西都要用上。好吧,说接下来的话,我们就来先做这个事儿啊,那么对于我们这个日活任务来讲的话呢,我们将来。要写到什么呀,就是按照什么呀,解释一下啊,我们要什么按照天分割索引对吧?按照天分割索引,然后呢,呃,这个我们可以什么通过啊,通过这个索引模板啊,索引这个模板啊,然后呢,控制我们这个字段啊对吧?控制这个mapping啊,就是我们可以什么自己去指定这个mapping啊,控制你的这个mapping啊还有就是什么这个呃,Sing啊对吧,还有什么呀,就是你的这个呃别名呃,Ally对吧,Allis对不对。
03:11
对吧,控制什么别名等等一些啊等OK,所以说呢,我们在写之前呢,我们先去什么呀。把这个模板给它建出来好吧,行,然后这个模板有了以后呢,接下来我们就什么正常把数据呢,往你的这个正常可以什么把数据呢,往这个o lap里面去写了,那我往这个op去写的话呢,那我尽可能是做一个什么批量操作。对吧,那你这个地方你要去写,然后呢,将来我这个订单的话也要去写,那你想想啊,你甭管是写这个日活的数据,还是写这个订单的数据,你们唯独不一样就是写物的数据不一样,写物的索引不一样。你的写入动作是不是都是一样的呀,同学们。那你既然这个写入动作都是一样的,那你说我是不是可以考虑写一个ES的工具类,将来我的所有的写入,我就什么直接调工具类不就完事了吗?对吧,啊,所以说了我们就什么还有什么呀,这个准备啊,准备这个就是ES工具类啊。
04:04
对吧。那你把这个如果都准备好的话呢,这个地方就什么直接放心大胆往他里面去写就可以了。OK吧,啊,来这个地方是这样子的,那你看我在这个DWD里面,如果说你之前已经把它都准备好了,那到这里面以后呢,我们是不是只需要建一个收银的模板,然后呢,接下来去写就可以了。是不是啊,把这个事儿都给它想清楚啊,来想清楚以后呢,接下来我们就可以呃完成这个功能啊同学们,呃,那我们先写这个工具类吧,好吧,先把这个。工具类给它写出来啊,这个因为我们刚刚讲完这个就是API的操作啊,说这个还是比较熟的,我们来把它写一写啊好,那我就回到我们这个项目中,然后来到这个有跳下面我们用上一个。右上一个这个盖类啊,我们叫做MYES的U啊。OK。行,那这个目前的话,我们是这样去规划的啊,这是我们这个ES工具类啊。
05:02
好工具类啊,就是用于什么呀,用于这个。用于啊,用于呃,对ES啊,对这个ES啊,进行这个读写操作,好呃,那现在我们摆到面前呢,我们就是需要有一个这个写入操作啊,所以我们定一个写入操作啊DFDF啊我们叫写入,写入的话我们就叫做save吧。好吧,就叫SE啊,呃,我们叫fuck。对吧,因为我们之前说过,我们尽可能要什么批量写啊box啊,行,那你既然你是一个工具类了,那你的东西呢,你就不能在这里面写死啊,说你得告诉我你要往哪个索引中写,那我希望你给我传上一个索引的名字过来。对吧,给我传一个所以的名字过来,然后呢,呃,再一个就是你要写什么数据啊,那你看呃,我们写数据的话呢,我们之前就分析过了哈,我们往ES中写的时候一定要做到什么呀,做到两件事,这个第一件事情呢,就是这个批写。
06:05
对吧,批写,然后第二件事情就什么就是密等写,因为我们之前研究了一个话题,叫什么叫精确一次,那精确一次这个事情的话呢,我们目前还差一个就是去掉重复数据,那怎么去掉重复数据呢?我就可以怎么做一个幂等写,所以说你要密等写的话呢,你就不仅得告诉我你的dock是什么,你还得告诉我你的doc ID是什么,这样我才能够说你的密等写,那我就要求你呢,把这两个东西给我封到了一起,给我传过来啊,那我将来既然你是一个批量写,那你传的肯定是一个集合哈,集合的话,那我就来个list吧。好吧,来个list啊,List里面这个是你的doc ID,后面是你的,呃,后面是你的这个数据,数据的话我就使用any。来写吧,前面是我的这个数据啊,我们叫做道斯吧,OK,嗯。
07:00
这咋了?呃,这个list不行是吧,嗯。我想想啊,呃,这样啊。这哈。好吧,这样来设计一下。了解吧,这是你的do ID,然后这是你的这个数据。OK吧,讲那如果这个有了以后的话,你看一下接下来我做的操作就是这样子的啊,我们直接呃去准备你的什么这个ES对象啊,来写一下,这是我的叫什么呀?叫这个客户端对象啊,客户端对象OK,那我定一下啊,叫ES client,叫rest,刚刚写过的啊,Rest high level client。OK,那我就写一个叫做build的吧,那我再定一个方法啊,这是用来什么呀,创建啊,创建这个ES客户端对象啊,客户端对象好DEF,然后呢,叫这个build行,这面怎么写啊,Rest high level plan,这里面你要写的话呢,我们刚刚不是写过吗?就是你的rest client。
08:05
嗯,直接先用吧,好吧,用一个好rest high level client,然后呢,接收回来,这是我的那个client,然后再把这个client给它返回回去是吧,那这里面需要传什么东西呢?我们需要传一个叫做rest client build,我们是通过rest client。好打个包啊,然后呢,去build一个对不对,好,然后这里面我们传上一个叫做http host。好,这里面是一个是你的host name,一个是你的这个po啊,这两个东西我们要定义到你的配置文件中啊,所以说你看我要回到这个地方了啊,来到你的配置文件中啊,这以前我们都做过很多操作了啊,所以说我就直接去写了来,这是你的ES啊,那就什么叫ES的host。哈,102ES的这个P,比如说9200。对吧,那你这个定义好以后的话,你还得回到你的这个,呃,就是你的这个这个config啊里面再去定义一下啊,ES的host怎么串啊,ES的这个post啊,这应该写不错啊,ES的这个P啊,ES的这个P。
09:21
能看明白吧。好行,那我们把这个写好以后,接下来你就回到你的这里面,你就可以去读了啊,比如说我们把这个读一下吧,叫my pro,然后呢,这里面我们写上一个myig,第二这个ES的host行,这是我的一个host,就读回来了啊host,然后呢,My pro yous,这里面写上一个my config的ES的po,好,这是我的po,就读回来了。那你读回来以后,这边就传呗,把你的host传进去,把这个po它需要的是一个int对吧,那我to一下,好,这是我的这个rest build,然后再把这个build给它传进去。
10:01
这不就搞定了吗?对吧,那你搞定以后,我们正常是要什么需要给上一个叫做什么关闭对象的对吧,就是关闭啊,呃,但其实我们在代码中我们就不关了哈,关闭这个ES对象啊,因为你要多次用对吧,所以你这个贸然把它关了是不好的啊,你关了以后别人用不上的对吧?呃,叫这个ESC啊,如果说不等于空好,那我是什么ESC加close。理解吧。好吧,这个大家应该都能看得懂的啊行呃,那嗯,那你就可以去写了啊,那你再写的话呢,这里面我们就可以怎么去做了呀,拿到这个客户端对象了吧,拿到客户端对象以后呢,接下来就是什么直接ES c.R呃,这是一个save啊,Save的话我们要用的是一个B操作啊,因为我们是P操作嘛,对吧,这里面我们需要用上一个叫做B。
11:04
报request好,接收回来,这是我的包request,然后把它拿过来。放到这个方法里面,然后呢,后面是request。呃,Request optionult。对吧。好,那接下来的操作不就是对他做这个什么。迭代循环了嘛,对吧,那我们就循环一下啊,就是DOS啊docs点什么for操作啊,For一下,然后这个是拿到我的每一个dock啊,就是每一个dock好拿到这个每一个do以后呢,下面干嘛呀,我们需要用上一个index request。Index。好,Request OK,然后呢,接收回来。对吧,然后呢,你要设置你的这个设置你的什么,这个索引的名字啊,索引的名字,这个索引名字,我看一下这里面能不能设置啊这里面。呃。可以吧,叫什么全局的对不对,那我们这个肯定是一个全局的,因为你正常写的话,你的每条数据肯定都是什么,我们现在肯定是要往一个收银头去写的啊,所以我可以把它设置成全局的啊,就是这个index name全局的对吧?那如果说你的不同的数据啊,每条数据呢,是写到不同的索引中的,对吧?那你要什么在这里面去设置啊,当然现在我们这种方法的设计肯定是往一个索引中去写的哈,OK,行,那这个有了以后呢,接下来那就是index request叫什么呀?我们要给他一个叫做source,就是你的数据。
12:29
那数据的话,我们肯定给的是一个摘啊,所以说我们需要把它的结果拿出来,把这个dock的呃,第二个拿出来,这是我的什么对象吧,但是要把它转成这个摘啊,呃,转摘的话呢,我们就直接嗯摘生掉。出啊,打个包啊。或者说你呃,我先把它写完啊出Jason string好,然后呢把它放过来,然后呢,这里面我们再去用上一个这个config。
13:02
好,出。介绍回来啊,这是我的那个叫做data战胜啊,就现在我是让你传一个对象过来了啊,比如说你传一个什么page log呀,对吧,或者什么DA in for呀,或者什么这个auto呀,你传一个对象过来好,那么当然了,我也可以要求你什么这个地方你就直接给我一个JA,你在传之前你就给我转成Jason往过传,对吧,都行啊,看你怎么设计啊,行,那这个有了以后呢,接下来你看我的S,我不就是给他一个什么data战吗?对吧,把data给他。后面的话就是我们通过content type。Content type,然后告诉他,我给你传的是一个再生数据。对吧,下面我要保证密灯写,密灯写的话就是index request一个DD的话就是我们的直接什么dock的dock的什么第一个就完事了啊do的这个下划线一这就可以了。明白吧,呃,这样写看的不太好啊,那我这么改一改吧,改一下啊,这是我的do ID,然后这个是我的,呃,叫做那个。
14:09
嗯,叫做叫做什么叫做,呃对象是吧,就是呃。到do do do OB勾吧,好吧,那这个地方我直接写什么,直接写这个do OB勾啊,这场直接写什么,直接写这个。Do ID啊就行了,对吧,这样更直观一点啊,行,那你把这个都写完以后呢,我们要把它加到我们这个报request里面啊,这样ADD把你的这个Du给它加进去。好,那最后的话,我们统一去执行一个报操作,那我这个数据呢,就正常写入到你的ES中了。对吧,这就是一个封装好的一个什么工具方法,OK吧,那这个工具方法有了以后,我们下面就可以什么正常的放到你的这个代码中去使用了。OK吧,行,停一下啊。
我来说两句