00:00
在原来呢,在给大家分析我们现在这个日活功能的时候呀,那我们说一共呢,那应该是我们现在这么几个我们的功能需要去做,一共是四个对吧?那么我们现在呢,已经把我们的第二个完成了,第二个干什么,就是过滤咱们的宠物数据,然后接下来让大家想一想,像这些东西,那目前啊,咱们这个生成的数据就这这里边了啊,是不是其实就是我们当天第一次登录的这些日志啊,对吧?那么这些日志呢,咱们要做统计分析,那么统计分析那么咱们应该怎么做呢?我应该啊,把这个数据往哪保存,往我们现在来search对来进行保存。对,也就是说咱们现在在这里已经啊做到这一步了,对吧,我现在呢,已经把这个东西的这个通过SPA推敏干什么呢?来做了个驱虫了,我在这里啊来做了一个我们的驱虫啊来做驱虫,然后接下来那么驱完虫之后呢,那我要把这数据干什么呢?保存到我们这个来里面去啊保存到来去对吧,那么保存去咱们是不是就可以到时候通过对吧,咱们一些对吧,我们这个相关的一些什么对吧,咱们这个语法来去做一些我们这统计分析啊对吧,其实呢,相当于我们OIAP对吧,做一些我们这个分析对吧,要把这个颜色呢稍微变一下。
01:16
这个是我们这个ES啊,往ES来保存啊吧,那么如果往ES保存的话,那么这个大概的功能,那么应该怎么去实现呢?啊,那么这个应该怎么去实现对吧?那么咱们现在呢,一起来看对吧?一起来看对吧?注意啊,按照我的思路来,现在咱们做第三个就是把每一个批次新增的当日活信息保存到我们这个来里面去,对,然后现在在来里边呢,对它做一些我们这个分析操作,那大家想一想,你现在啊,把这数据要往A里面存,那么如果往A里存的话,那A这里边是不是得有一个东西来接收它呀,那么A2个重要的概念,一个叫什么,一个叫index。
02:02
对吧?那么另外一个呢,叫document啊,另外一个叫document,对吧?那么咱们现在的index是不是相当于我这里是得有一张表了,对吧?那么然后这个document是不是相当于咱表中的记录啊,对吧?那大家想一想,你采集的每一条我们的日志是不是就相当于一个document,对吧?你想你现在采集到一个登录日志,其实就相当于一个document,那么咱们应该放到我们这一个索引中,对吧?那么如果要放索引的话,那么这个时候咱们是不是得先创建一个索引啊,对吧,那我现在在存的时候呀,那一般咱们实际项目怎么存着呢?它肯定会分开,把每一天啊,它所产生的数据咱们放到一个单独的索引中,对吧?那意味着什么呢?意味着每天咱们是不是得创建一个index对吧,那这样的话,咱们这个量还是比较大的,所以说为了咱们现在简化我们这个创建操作,咱们在这个你来测试里边是不是提供了一个技术啊,叫什么来着,索引模板对吧,咱们是不是可以直接创建索引模板,对吧,然后只。
03:02
只要你往咱们那索引放数据的时候,符合我们当前索引模板里边定义的pattern模式对吧?那么这个时候呢,就会按照我索引模板里边它所定义的setting啊,Map啊对吧,来帮助你来创建到索引对吧?所以说那我们现在呢,那应该对吧,去把这个索引模板给创建一下,那么创建索引模板之前呢,那么咱们还是短来在这把该启动的东西啊给启动一下,那么如果你要想操作elect search,那么这个时候呢,你是不是该启两个东西,一个是集群,那么另外一个是K班的对吧?咱们是不是也碰撞一个小本了呀,ES,然后呢,点start注意啊同学们如果说这块呢。大家机器性能要稍微差一点的话,对吧,你都不一定多骑我三台对吧,就是你现在起一台一台search就行了,对吧,因为咱的本身是不是一台也是机群呀,对吧,一台演示集群好了,那我现在呢,把这个做完之后呢,那么咱来看一看我当前现在这个程序的运行情况,对吧,每一个节点都多了一个elect这样一个进程对吧?然后接下来咱们现在呢,要去访问一下对吧,访问一下呃attp,然后接下来我们当前的哈豆202对端口号5601,这是咱们现在K班的它的一个我们的端口,然后K班端口,然后接下来呢,呃,在这里去找到我们现在呢这个开发啊工具啊,然后在这里get work,对吧,Get work,那么咱们现在呢,像我们这个索引模板的创建呢,我直接拿过来是吧,把这个东西CTRLC啊,CTRLC直接拿过来啊。
04:38
然后放到这里咱们执行一下,对,放在这执行一下,那么在进行之前呢,咱们先来看一看我这内容,首先呢,Put短关键字表示发送put的请求,然后接下来,然后呢,咱们要干什么,我现在要创建我们这个模板,这个模板名称叫什么呢?技贸咱们现在是0523对吧,那我现在的这个模板名称对吧,叫它,然后接下来,那么咱们现在模板的一个这个索引的一个模式是吗?对吧?就只要是符合这种形式的,到时候都使用我这个模板啊,那这块呢,我改一下,这是技贸0523啊0523,然后第U表示日活这个信息啊,就到时候创建索引呢,应该是这个开始的,那这应该这个开始的,然后接下来呢,那么咱们再往下的话,对吧,这里是setting setting,我们现在呢,设置一个我们这个分片吧,三个,然后接下来再往下,这里边有咱们这个别名,别名取了两个,一个是单独针对我的索引的,那么另外一个是不是相当于对我这个使用这个模板所创建的索引进立一个分组啊。
05:38
对吧,哎,统一的对吧,都可以使用这个块的去查询,那我把这个呢改一改,这个就是0523对吧,B1啊,那这块大家可以不改啊同学们对吧?但是你尽量一定要统一,你要不改的话,你全是我们现在呢这个2020对吧,你别到时候改了两个,你想起来,哎呀不改也行,是不是对吧,改了一半,这样就比较麻烦对吧?然后接下来像咱们现在除了我们的settinging和我们的别名之外,那么再往下这里就是什么呀?就是map map是什么?Map是不是就是我索引它的一个属性的一个类型啊对吧?那么这里呢,我主要指定这么些内容,注意看,一个是我们现在它的一个I midd对吧,这个设备ID吧,然后用户ID,然后接下来这个东西呢,是我们的一个AR,这像像这个地区吧,渠道吧,版本吧,对吧,然后这里像这些东西,你们应该在我们离线的时候,是不是都接触过属性。
06:33
这些首先接触过吧,对吧,当前我现在这里边对吧,这个采启动的资识里边包含一些内容对吧,什么地区啊,什么咱们渠道啊,对吧,你是来源于哪儿,是我们这个APP道对吧,还是什么安卓应用市场对吧,还是什么对吧,然后这个版本是什么,然后接下来这个时间,然后这个呢是小时,这个分钟咱没有啊,但是这里边呢,对它为了扩展其实也可以创建了,对吧,但咱们其实在我们生成日期的时候,我并没有往这里放分钟啊,我是不是只是放到咱们这个天,还有咱们的小时啊对吧,然后这个还有一个什么呢?还有一个是我们的时间戳对吧,还有时间戳好了,那咱现在把这些东西呢去执行一下啊,把这些东西执行一下好,第一个索引模板创建完了,那么索引模板创建完之后呢,那么接下来咱们第二个对吧?那么大家想一想啊,我要想往咱们这个啊索引里边来添加文档对吧?那么怎么添加呢?那么曾经啊,咱们写过啊,曾经我们写过工具类在我们的YouTube里边对吧?在咱YouTube里边,那么这里呢,去找。
07:33
存一下咱们有一个叫mys u对吧?那么在我们的mys u里边大家看到对吧?呃,那么在咱们这里边大家可以看到对吧?我们曾经呢,往里边放的时候,这里是是有一种put方法对吧?你看这里是有put方法,而且put方法的时候呀,大家注意,我现在往咱们这个这个所有里面插,插入我们这一个多少这文档,我给他进两种方式,那么第一种方式什么,是不是直接把咱们现在的Jason这个字串给他拿过来对吧?你可以直接把J行字串传给我,然后呢,我往里边放,那么第二种方式呢,大家看咱们现在呢,你要往里面放对吧,那我现在呢,如果添加数据的话,我需要的是一个index,那么你可以把这个谁给我传来的,你是不是可以把你现在要添加的这个,或者要直接直接字串我封装成一个样例类啊,对吧?那么我真正在写代码的时候,那我更建议哪种方式呢?那肯定是我们这个封装这个样例类的方式,对吧?那么既然封装样例类,那么这个样例应该和谁对应呢?是不是应该和咱们。
08:33
现在我这个索引它里边这个接收的数据来进行对应了,对吧?所以说呢,那我在这里我把样例内啊也去创建一下是吧?把样内也创建一下CTRLC,然后接下来呢,来到我们这里,我呢去新创建一个我们这个包啊新创建一个包啊叫B,然后下面呢,来一个我们的dau in inform对吧,这样的一个我们的类对吧,这样的类对吧?然后接下来咱们现在呢,把这个代码直接拿过来啊,把这个代码直接拿过来对吧?那么在我当前的这里边就是有我和我索引啊它的属性对应的内容对吧,有m middu ID,然后呢地区,然后这个渠道,然后这个呢是我们这版本,当然这个呢是日期的小时分钟以及呢,咱们现在时间戳对吧,那么咱样例内有了,样例内有了,那么有样例之后呢,那么接下来再往下对吧,那么我们现在要分析一下,原来呢,咱们在添加的时候,我们写工具类的时候,我说我们现在先给大家。
09:33
简单介绍对吧,我们介绍这两种方法,Put in death,大家看一看,在咱们这里,我们原来介绍这两种方法,Put in death是不是都是往里面一条一条添加呀,对吧?但是我们现在呢,在这里我还是要把这数据的往我们这个A这保存,你这个数据是什么,你这个数据呀,是不是我现在一个采集周期的数据啊,对吧?那么如果说我现在一个采出去,我现在采集到1000条数据,然后你再把这1000条数据一条一条的插到咱们这个来里边是不太合适,对吧?所以说呢,那这里我说一个语文批量的操作,我问大家A本身它支不支持批量的操作啊,啊支持吧,我一开始我就告诉你们说这个东西不用记别的,你就记住单词就行了,对吧,是不是有一叫book这个单词呀,是在批量操作的对吧,所以说呢,那么咱们现在在做操作的时候呢,那应该也是对吧,要批量的往我们这里边啊,来进行一个插入,对吧,那么我现在呢,要想批量插入的话,那么咱们在这里。
10:33
就把这些东西写一写呗,对吧,把这东西写一写,呃,那么如果说啊,那么你要想去完成我P量插入的话,那咱们先来看一看在我们这个啊,我们的应用程序里边,DO1APP里边大概做的功能,对大家想一想,到目前为止,咱们现在我们Spark streaming的是不是已经它的操作快完事了,对,我现在已经去了重了,把数据拿到了,然后我现在是不是就开始往al这写了,以后在分析的时候,你A来设本身,你来做分析是不是就行啊对吧,你来设本身,你来做分析就行,对吧?哎,那么如果A来设它本身呢,它可以做分析,那么咱们现在在我这里,我是不是可以把这个任务给提交一下呀,对吧?那么咱们现在呢,那来看一看,我现在呢,来做咱们现在的提交操作,注意啊,在这里啊,我们现在要干什么呢?我现在啊要将我们这个数据批量。
11:33
的保存到哪呢?保存到我们这个ES中对吧?将咱们数据批量的保存到ES中对吧?那么如果想做这个事的话,那么大家注意看前面数据呢,已经过滤完了,那这filter stream,然后接下来那批量保存是不是咱们一执行,那么应该是不是咱们现在作业提交了呀,所以说这个时候呢,可以让咱们a for r DD上场了。啊,这个时候可以让咱们的for RD账上了,对吧?那我现在for RD账上之后,那么接下来在咱们这里边对吧?那本身这是不是一个RDD啊,那相当于当我现在把我整个这个离碳化流转为一个RDD来进行操作啊转让RD进行操作,然后接下来那么咱们现在呢,这个RDD它本身在它处理的时候,那怎么处理呢?咱们现在保存大家想一想这里啊,是不是也得去对吧?咱们分区为单位进行处理更合适一点了,对吧?就注意啊,咱们这会有些同学倒不明白,说老师我现在这里拿拿D这是干啥的,注意它本身的for RD它是一个形动算子对吧?这个作用是什么?这个作用呢,就是原来我现在在这个离就在咱们S里边,我对于咱们数据封装是什么,是Dis stream,但是我现在呢,我可以通过它把它里边封装的谁RDD给拿到对吧,那么RDD大家想想它里边是不是有很多个分区啊,你在处理的时候对吧?那么咱们是不是应该是啊,不要一条条处理。
12:59
是不是以分区为单位进行处理,这效率是不是更好一点,尤其是在做一些咱们这个和数据库打交道,比如说保存呢,什么这个操作的时候,对吧,所以说呢,那么咱们现在在这里啊,也要干什么,也要的以分区为单位,以我们这个分区为我们这个单位来对我的数据的来进行一个我处理,怎么以分析为单进行处理呢?那么这个时候大家想一想对吧,我现在是不是其实就可以我们这个对吧,FOR1量对吧,这不是我们的map了,卖不干什么,卖不做转换对吧,但是我现在呢,这个东西你最终不给我东西没问题,如果卖法这是不是要求你把分析数据,我把分析数据给你,你最终你是不是得我返回一个可迭代集合呀,对吧,Forit这个东西,它不是我把这给你,你处理完之后,你不给我返回是不是也没问题呀,对,我现在我其实我可以直接保存了,对吧,那么你在这呢,把这个操作做一下,那么这个时候它里边拿的应该是杰森奥,对,然后itr对吧,这是一个可迭代的一个。
14:00
集合对吧,然后接下来,那么咱们现在这里边干啥呢?我是不是可以对我这个这个这个这这这个东西来做一个我们的处理了,对吧?那么这个处理呀,大家注意本身呢,这个里边放的呀,是什么呢?本身这里边放的是我们的接图对象,但是我们在保存的时候,对吧?我希望什么,我希望把它封装成一个样例类吧,你看一看同学们,你们在咱们这个输出的时候,对吧,咱们肯定把它封装成一个一个杰森,一个杰森一个杰森,这是咱们在上面做的对吧?把它拿过来之后呢,它本身对是一个我们这个什么对吧,这个卡不卡它一个consumer record的,然后接下来咱们把这个转换成杰son对吧,但是这个接象呢,和我们最终啊,他想获一样累,它不太一样,所以说那么咱们现在呢,要做一个操作干什么呢?对吧,把咱们当前这个接对象呢,给它转换一下,转换成一样类,那么这块操作呢,那我不写了啊,其实这种比较简单的同学们对吧,那么你拿到这个东西之后,对吧,那么咱们呢,对它做一个转换。
15:00
对,怎么转换呢?来咱们直接把这样代码做一个封段,这块代码其实对吧,这个这不写了,对这像这块代码不写行不行对吧?来来我看一看吧,同学们对吧,就这块本身呢,其实就是一些我赋值的代码啊,来复制代码对吧,像这块呢,不写了对吧,那咱们这块呢,可以写一下什么呢?说本身啊这里一个Jason,然后接下来,那么咱们现在呢,对它做一个结构的转换,对吧,原来的这里边放的是一个接对项,然接着咱现在map一下对吧,那么这里面呢,那么如果做转换的话,应该是达到了一个我们现在对吧这个数据对吧,那么这个数据大家看本身这个是一个JS对象对吧,这个呢是一个J森obg对吧,然后接下来我现在呢要做转换,对,那么怎么转换呢?就是我刚才拷贝这些东西,注意看啊,朋学们在这里你本身呢,拿到的是我们现在它的一个Jason对吧,然后接下来呢,咱们通过它可以拿到我们这common,其实这块啊,大家想一想,这是。
16:00
像谁呢?就是我们本身输出的时候,它的格式对吧,它的一个格式对吧,那我像我什么midd呀,UID呀,像这些东西,它并不是直接在我直接对象下边,它在哪是不是在哪到common下边啊对吧,它在common下边这块需要我把这个东西这个运行一下,然后把这格式给大家看一下吗。同学们这会需不需要我把这个东西运出来,说老师这格式怎么来的呀,对吧,来我我运一下吧,同学们对吧,在这啊,就是你现在呢,把这块呢,先注释掉对吧,先注释掉。然后这块呢,过滤完毕之后呢,拿的是我们这个抗的对吧?那这块呢,其实你也可以先把它注释掉一下对吧,这块呢,你也把它先注掉一下对吧?回到哪呢?对吧?回到咱们第一次输出的时候对吧?回到第一次输出的时候对吧?就咱们现在先不过滤对吧,先把这数据呢给拿到对吧,先把这数据给拿到对吧?那么如果说把数据拿到的话,这个时候它的格式什么样的对吧?咱们先来看一看它的一个格式来在这里我们呢去运行来我们去运行。
17:09
然后呢,我现在把这数据呢,生成一下,生成一下。好了,这个数据呢,生成咱们现在这里应该可以采集到我这数据吧,对吧,采集到之后呢,咱们现在也关掉它了啊,关掉之后呢,随便拿一个,随便拿一个对吧?来在这里,我现在把这数据呢,看RC拿过来,拿了之后呢,我现在不联网去解析了,同学们我就往这来放对吧,那么咱们可以看到啊,本身这是一个Json,然后接下来再到JS里边呢,这一些我们这属性啊DT,然后common,这common它本身呢,大家看它是不是就是一个JC啊对吧,你看咱们现在这一格式对吧,在咱们这里边应该是这样的一个格式,对吧,我现在呢,我就不让它解析,我自己把这格式稍微调一下,对吧,咱看一看就行,对吧,在这里对吧,然后呢,这个,然后这里对吧,这个东西。
18:07
然后这个呢,是我们那个start啊,这个start,然后这呢是关于我start里面一些东西啊吧,这个其实对我来说这个倒没有太大用啊,把这格式整体都调一下我们啊,然后这大完事之后呢,那么这块就是我们现在小时啊,以及我们时间戳,然后最后呢是他对吧,咱来看一看啊,就是说我们当前咱们采集到数据之后,那目前它的一个形式是这样的,对吧?那么我们现在在我们这个这在在我们这个这个当前的索引里边,我需要用哪些信息呢?我是不是需要什么midduidd chvc这些东西啊,像这些东西咱们在哪呢?是不是在我common这个接对象下面呀,对吧,所以说同学们咱们在写的时候呢,那你这需要注意一下,对吧?来,我现在把这个呢停掉啊,把这停掉,然后接下来恢复一下,咱们现在呢,来到这对吧,来到这。
19:07
这那我们现在呢,要提交,提交之后呢,那我们以我们这个对吧分区为单位来对数据呢进行处理对吧?那么处理的时候呀,那么这块其实是我们当前分区的内容,对,然后接下来我把分区内容呢做一个映射,对吧?那么每次呢,我拿了接对项,拿到接对项之后,那么这里大家想一想,这个阶对项呢,是不是咱们现在这个内容啊,对吧,那我其实我这个好多东西是不是从这里来的呀,对吧?所以说呢,那我现在在这里,我要通过Jason object.get JA of.get咱们的Jason object获取谁呢?获取咱们的common到会common,这common本身是什么,它本身是不是还是一个杰对吧,本身在咱们里边,比如说叫common,然后呢杰森OBD对吧?哎,它本身的这个阶对项对吧?那么只不过是common对吧,这脑,然后接下来,那么你拿到它的目的是干什么的,你拿它的目的是拿到咱们这个阶对项里边这些属性。
20:07
对吧,那么给谁赋值呢?我们要封装一个样例类对象,叫DAO in,那么这个样对象需要哪些东西呢?咱们看到这里边对吧,我当前呢,在咱们这里边第一个mid mid是不是直接在咱们这里边可以拿到呀,对吧,Mid,那你怎么拿呢?是不是通过咱们这个common Json object的点,然后接下来get string是不是可以拿到我们现在mid啊,那么除了MIT之外呢?那么咱们现在这里把别的呀也给拿过来对吧?其这块的代码都要大家注意啊,这个其实就体力活了啊,其实这个就体力活没有什么说这这就是说创造新代码在里边对吧?那么咱们现在除了它之外呢?那第二个咱们什么u id.get我们这个string对吧,然后接下来UID对吧,然后再往下对吧,就是这会就是稍稍微心细一点啊,你细点心别写错对吧,然后接下来咱们第三个这是什么呢?AR到地区对吧,那就get我们这。
21:07
String,然后呢,把这AR给拿过来,那么再往下对吧,咱们开始我们这个啊渠道对吧,那么在这呢,Get我们这个string是吧,把这个CH对吧给拿过来,然后再往下多点。然后这里对吧,有一个咱们的版本对吧,那就是get string,那这个呢,是我们这个版本对吧,然后再往下对吧,那么这里呢,对吧,咱们看一看该什么了,是不是该是我们这个这个date了呀,对来接下来这里get string,对,然后接下来DT对吧,同学们我写的还可以,哎,对吧,就一定要注意是吧,别写的太欢是吧,你像咱们现在整个这块是吧,我在写的时候对吧,这个从我们的。com里面拿东西基本上差不多了吧,对吧,那么拿DT在哪,是不是在我们的Jason object下面,所以说呢,那么你在获取的时候不是他的,应该是我们Jason object对吧,JA object对然记起来,那么除了我们的DT之外,那么再往下这还有谁呢?还有一个对吧,我们这个HR对吧,还有HRHR是不是咱们这个上面处理过,我刚往这个职里放的呀,对吧,那应该也是咱们是Jason of这点,我们现在呢,Get string,然后接下来这个呢,是往HR。
22:23
然后再往下走对吧,再往下走干什么了,再往下走是不是分钟了呀,分钟咱们没有是吧,没有来呗,对吧,给它切切死一个对吧,这个东西呢,贴死一个短到器来这里TSTS在哪呢?是不是也是在咱们现在这个JS我这下面对吧,那么咱们应该应该就是我们这个Jason of my get的点,我们现在呢,Get long,哎,那么我们现在啊这个get long有一个方法,还有get long value,哎,看俩好像不太一样啊。哎,这个盖子盖子浪歪掉,以前比较过我们同学们。
23:02
Get along get along value是吧?那么这块呢,咱们现在用哪个是吧,随便是吧,到这里你看一看它的区别就行,你看我现在用的是我们的fast,那么在咱fast里面有JA object,其中呢,在获取数据的时候有什么get,有什么get me,那么这块代码你们看一看,来告诉我它的区别在什么地方,看一下啊,咱们当前这两个方法,然后呢,你们告诉我它的区别在什么地方。区别在什么地方,返回值是吧?其实它底层调的方法是一样的,但是有些时候呀,大家注意对吧,我在去我们的操作的时候呀,我调1GET浪对吧,但是我这个浪没有,就我当前这里边没有值,那没有值的话呢,它有可能返回什么呀,返回n nu空对吧?但是你下面再用nu nu做操作的时候,是不是有可能控制帧呢?对吧?那所以说呢,你可以,你如果说你下边啊,你再用它做操作,那你为了避免控制帧,那你可以怎么办呢?对吧,你可以啊去调那个get long me对吧,如果说哎,我没有取到值,它等于空的话,那么这时候给你返回一个什么呢?给以返回一个,呃,零啊给你返回零对吧,这是这个啊好的,那咱现在呢就用它就行,对吧,这里TS啊吧,这个对吧,TS。
24:51
好了,那这样的话,咱们现在呢,把这个东西啊给它把重新啊重新做了一下,那么重新的去转换之后呢,那么咱们当前这个分区里边,它的结构应该发生变化了,原来呢,是一个我们这个短Jason的迭代器,那么现在呢,咱们点二我们这个VR注意看,那么这时候呢,它的结构啊,是一个我们这个的地理啊低于O的迭代器,在这也不好,对吧?那么咱们怎么办呢?在这里我总感觉你想一想,咱们在操作的时候,迭代器它本身是不是接口啊,对吧?那么接口你肯定不如操作某一些这个集合来来方便吧,比如说那你操作editator和list,那你肯定对list更擅长一点,对吧,所以说呢,我转换一下,那么如果转换的话,那么当前呢,咱们得到了一个dau的吧,Info list对吧?来那里边放的什么呢?里边放的是我们的D位in for,那么当前这个D位in for是什么?是不是就是我们这个分区里边所有需要去我们这个宝。
25:52
保存的我们的日活数据呀,对吧,也就把当前这个分区中所有需要保存到来search里边的日活数据,咱们呢,给它放到我们这个这这个集合里面去了,对吧?然后接下来那么咱们现在那就保存呗,对吧,在这里对吧?呃,把这个数据拿到对吧,拿到之后呢,那目前呢,咱们需要去把这些东西保存一下,对吧,那咱们要保存的需要提供相关的一个方法,对吧?那目前咱们现在这里边这个批量保存的这方法好像还没有对吧,你想想咱现在这里说没有批量保存的一个操作呀,对吧,所以说接下来咱现在干什么呢?要去将我们这个数据,然后呢,批量的保存到我们的ES中,在ES工具里咱们是有的,对吧,ES工具是有的,比如说这个都叫MYE,我希望你给我提供一个book对吧,Insert这样的一个方法对吧?那么如果你要提供这个方法的话,大家想一想,你让我帮你保存什么这个东西,你是。
26:52
是不是得传过去,你是不是要把这个集合的数据P掉,插入到我们中,对吧?那么另外一个,那么咱们现在如果要把我们这插入的话,那么当前这个连它的主题呀,对吧,咱咱当这个有一个索引模板定义好了,对吧,前面这东西是一样的,但是呢,大家想一想,我们现在啊,是不是在保存的时候也应该保存的是吧?以分以我们这个天的为我们这个这个索引的一个分割呀,什么意思,就是每天是不是应该是一个索引啊,那么如果每天一个索引的话,那么这个时候也是不是应该把咱们现在这个这个当前日期给我传过去啊有那么正常情况下,同学们,那么咱们现在呢,要传我们的当建日期,那怎么传呢?那就把来呗,New一个咱们这个simple date format,然后接下来指定一个我们现在格式四位的年月份日,然后进下来去调一个咱们现在的一个方法到format,然后呢,咱们new用一个date,是不是当前的一个日期啊。
27:52
然后接下来点2V2得到一个什么呢?得到一个字符串,这个呢,就是我们当前这个对比啊,然后把这DD对作为我们这个参数给传过去,其实你完全可以这样,同学们,那你完全可以怎么办呢?你可以在这里直接把咱们的名字呀给我拼接上对吧?什么意思,我现在呢,要把咱们当前这些数据批量的保存保存到哪?保存颜色是保存到以来色时每一个索引中,你可以直接在这里把索引给我拿过来,对吧?那我现在呢,就把这个索引下面这里保存对吧?把DT作引参数给它传过去。
28:27
对吧,直接你把索引名称就可以给我拿过去了,对吧,这个呢,你就不用在我们这个这个工具里边再做了,对吧?那么这个到时候方法完的功能是什么,是不是就往这个索引里边来批量的插入我这集合里边这些数据啊,对吧?哎,那么这块呢,其实有一个问题,同学们,其实如果说我现在真正的一个生产环境啊,咱们这么写没问题,没啥事,对吧?但是呢,咱们现在如果是模拟数据的话,有可能会出现一个什么情况呢?上面咱们是不是有一个DT。就是你真正啊,你这个日志的时间啊,比如说我生成的是22号的,这个从咱们现在这个时限来讲是不可能的,然后但是你当年时间是不是23号啊,对吧?你你可能会发现,因为我怎么把23号20号的数据保存23号里边了,对吧?但其实我们生长环境不会这样,因为生长环境你收集的日志肯定是你当天的日志嘛,对吧,肯定你当天日志对吧,如果说这会你要非得让他俩保持一致的话,怎么办呢?你是不是可以把这个变量呢,往上去定义一下,比如说我定义在这。
29:26
对吧,然后接下来咱们现在呢,再去获取的时候,我先把谁,我先把咱们DT给获取一下,复制给这个变量,然后你这样说在这也可以用了呀,对吧,这个呢,这个影响不大,对咱们其实没有什么太大影响啊,你知道这个事儿就行啊,你知道这件事就行好了,那这样的话,咱们现在呢,这个批量保存啊,我们这个代码写了,那么具体怎么保存,对吧,咱们稍微休息一会儿,对回来继续稍休息一下。
我来说两句