00:00
啊,那么接下来啊,咱们再来一个对吧,刚才呢是像ES就是插单调数据第一种方式对吧,比如这个叫一吧,然后呢,这叫一对吧,那接下来咱们呢,来看一看,像ES里边插入单调数据它的第二种方式,呃,那么咱们这两种方式其实区别在哪呢?第二种方式啊,我其实是将什么呢?将咱们要插入的文档啊来封装为一个样例类对象,样例类对象这个呢,是直接的这个将啊。插入文档的这个数据的以咱们接S形式直接传过去的,以咱们这JS的形式的直接传递啊好,那如果说你要想封装样例类对象的话,那么这个时候呢,那首先你是得先定一量样例类啊对吧?那咱们现在在这呢,我就定一个样例类呗,对吧?呃,那定义样例类咱们在这里大家想一想,在这里这个样例D的时候有什么要求吗?啊,直接就是case class是吧,Case class然后呢,咱们这个比如叫木吧啊,然后接下来,那么咱们现在呢,在这是吧,那我定一压力类,那么压力都有哪些属性呢?那你是在参照了一下,咱们刚才这里面插入这些东西啊ID,然后name,然后一个豆瓣评分是吧?ID应该什么类型?
01:35
在这什么类型long类型更合适一点是吧,那来呗,来ID咱们这个long类型啊,ID long类型,然后接下来name这个呢,应该是string,还有一个是我们这个豆瓣score啊,豆瓣score啊,那么豆瓣score呢,在咱们这里边什么类型,Double这型是不是float的更好一点呀,对吧,就咱们现在这个东西,你如果用double的话,他到时候在咱们这个存的时候,他是不是本身他帮咱们这个解析中文是float的呀,对吧?那所以说咱们在这里呢,直接就是我们这个float,然后再往下这里还有一个东西,对吧,这个act list演员列表什么类型。
02:22
演员,那表什么类型,对象类型很好,万对象是是什对象呢?注意啊,这是一个这个东西呢,大家以后你不管在哪处理的时候,这是一个常识对吧,就是咱们现在本身这是不杰森啊,杰森呢,这里是不是个J森数组,那么一般咱们接身数组对吧?不管是哪一个我们这个的第三方组件对吧,一般呢,它把接数组是当做什么处理的,一般当做集合,粒子集合一般是粒子集合对吧?这里咱们扎回来讲对吧,那么咱们现在在粒子集合里边,这里是不是又是我们这个接C呀,那这里边这个粒子集合里放的是什么。
03:10
例子接里放的就是一个个杰森,这里边放的又是什么啊,例子里放的是map啊,就整个咱们现在这里边,大家想一想,本身呢,我现在啊,在咱们这里边对吧,那a act list对吧,那么代表演员列边,演员列表里边呢,是不是又有我们这个ID,还有什么咱们这个name呀,对吧,ID是多少,这是建值对对吧,比如说这个ID是三对吧,然后呢,这个name对吧,它是一个一个的建之对对吧,这个呢是我们现在张宇,它代表什么?它代表现在是一个我们现在这个map对map里面的两条记录对吧,代表呢当前演员的信息,然后接着把这个map要放在哪呢?要放在一个粒子集合里边来存一下啊,那么如果说有多个map的话,到时候多个map的话都往这例子里放,那么最终呢,它在解析的时候,可以把咱们现在这个例子给解析成我们一个数组啊,这数组,所以说呢,那咱们现在在这里,那就得来呗,对吧,那我现在还有一个演员列表act list啊act list。
04:10
那么当前呢,这个at呢,它什么类型呢?是例的类型对不对,然后例放什么呢?放的是麦对吧,那这样写的话就错了。如果这样写就错了。为什么错了?老师,这不挺好的,也没报错呀。对,就咱们现在同学们,我现在这里我是不是对要对做解析呀,那么解析呢,一般呢,我是使用的一些短fast Jain呢,或者说其他的一些我们的组件对吧,或者内部的一些组件,那么在解析的时候呢,它一般都是对什么呀,对咱们扎入对象啊来做解析,所以说这个时候呢,你封装呢,这个数组,我说它应该是一个粒子集合对吧?但这个是谁呢?应该是我们Java u包下边的,所以说呢,在咱们这里边我做一个导包import,把咱们这Java YouTube导包导进来啊,把那Java YouTube导包导进来啊,在这里用一下吧,对吧,如果说你看这个idea太太太什么了是吧,太强大了啊,如果说没用的话,他认为我没必要导是吧?Import然后加起来知吧,加YouTube是吧,然后接下来咱们现在使用的是我们这个u list,那里面放的应该什么呢?应该是我们这个u DR map啊,U叫map,然后接下来那么咱们现在在map里边啊,你看一看。
05:36
这个map它本身这里边放的对吧?那么key呢,是不是都是字符串,但是value呢,是不是有的是整数,有的是字符串的,所以说呢,你在那里都用来搜串呢,也不太合适对吧?那么咱们这里应该是我们这个object啊,在咱们这里,那应该是我们这个object,因为我也不确定吧,到时候要放什么类型嘛,对吧,那所以说我就得放它的一个副类啊吧,就放负类好了,那咱们现在这个东西有了呗,对吧,这时候这是关于我现在啊,我定一个样例类,那么如果定义样例类的话,那么咱们这块呢,就得稍微的去改一改了,对吧,咱们在这我呢就得稍微改一改了,那么具体咱们在做的时候,比如说提供一个方法叫put index2,然后接下来呢,那么咱们整体的思路啊,和咱们上面应该是一样的,首先第一件事也是获取咱们的客户端对象VR对吧,这个呢,应该是我们这个just client对吧,这个呢,应该是我们这just client对吧?然后接下来那么咱们现在呢。
06:36
这个jezz client呀,它操作完之后是不是得去关闭呀,对吧?然后呢,那咱们现在在中间执行逻辑是不是应该调用jezz client,它里边有叫SQ的方法呀,那么这个isq方法它需要接触的是一个action对吧,这样的一个实现类,那么所以说呢,咱们在这里我呢应该是创建我们的个action,它的一个实现类,那谁呢,我们现在是不是index呀,对吧?Index index代表的是我现在呢,要向我们这个来插入新增一条数据,对吧?那咱们这里呢,就new一个index,大家注意,那这个东西呢,对吧,它本身并不是直接构建的外部对项,而通过构造者设计模式对吧?那么如果构造者设计模式的话,那么咱们是不是得通过内部的对象来帮咱们去创建对象啊,那怎么办呢?它有个内部的对象叫builder,对然器在builder里边需要传什么,是不是需要咱们传我们的阳利的对象啊,对吧,暂时这一块呢,先不传啊,暂时先不传,然后咱们呢,先把这对象给build出来。
07:36
那么build出来之后呢,这个应该拿到的是一个index,然后你就可以把insex呀放在这里了,对吧?那么接下来有两件事需要去做,对吧,第一件事对吧,那么咱们要想往我们这个索引里边来添加文档,那你是不是必须得指定往哪个所里边来添加呀,怎么指定呢?Index对吧,我现在呢,还是啊往我们这个movie index下划线,咱们刚才是是五啊对吧,来指定,然后接下来那这里呢,在指定的type,注意啊,调它的type方法的时候,调它的type方法的时候,这个type本身咱们在我们讲四篇的时候也跟你说过吧,它算是什么,它算是一个关键字嘛,对吧,就相当于咱们这里是不是它,它它的作是什么,有印象吗?曲别名对,是不是它曲别名啊,对吧,那么我现在这里,它既然是个关键字,那么咱们在这个方法名也叫也叫type,所以你看在调用的时候,它是不是再给咱加了一个标号,对吧?哎,加一个标号对吧,然后接下来,那我现在呢,这个是我们这个。
08:36
部位对吧,注意啊,那么这里我现在呢,要往里边来放我们这个数据,那么这个ID多少呢?ID对吧?来一个到刚才的一对,比如说现在呢,是二到现在这,然后接下来这第一件事啊,咱们把这些东西指定好了,指定好这些事之后呢,那你的文档是什么,现在文档是没有了呀,对吧,所以说接下来那我现在呢,在这里我要封装咱们的样例类对象,你要做的啊,你要做的事就是把这些东西啊,把这些东西给我转换为我们现在呢是吧,它的一个我们的一样对象,它的属性就可以了。
09:11
是吧,那来呗,在这里咱们来看一看怎么样把这东西给我转化为咱们压对象的属性。对吧,那首先咱们如果想创建样的对象的话,那应该两种方式new,然后呢,加上咱们这个moon尾对new我们这个moon,那么它底层调的在构造方法,那么第二种方式呢,是不是我直接move对吧?那么它底层调的是我们这个和play这个方法对吧?然后接下来传我们现在这个参数第一个ID对吧,这个ID的这个东西对吧,无所谓对吧,比如说我现在的300对吧,这第一个咱们现在在这里我应该传一个ID,这个ID是不是我们现在对吧?他当前这个文档的属性的ID啊对吧,比如300名字是谁呢?我现在这个电影是吧?那比如说咱们当前这电影叫什么?叫天龙八部啊,天龙八部啊,然后接下来咱现在豆瓣评分是吧,这个豆瓣评分是吧,这个。
10:10
比如说是9.0对吧,比如说9.0对吧,那我现在这里是不是得加上一个小尾巴呀,Float的类型吧,对吧,然后接下来actor list对吧,Act list,那么这个时候呢,这个act list呀,它是一个什么?它是一个这这这个东西对吧?咱们本身这里面是不是一个集合,然后集合里放在map呀,啊所以说呢,那你现在你还得把这个演员呀,给我往里放一放啊,把演员往里放一放对吧,那么如果放演员的话,那这个时候你是得定一个粒子集合来封装咱们演员呀,对吧,那就来呗,在这里我要定义一个我们粒子集合,那VR,然后比如说这个呢,叫actor list啊actor list,然后它是什么类型的呢?应该是我们这个u till.list这个类型的吧,或者说你现在呢,你先不这么写,一会咱们自己让来帮它生成对吧,那你要new的话,直接你是不是应该new它的时线内呀,对吧,那一般咱们例子时间内用的是谁every list是吧,那就U点我们every list对吧。
11:10
那么这里边是泛型,那应该是U点,我们现在map对吧,那里边放的应该是一个是K周串,那就是object对吧,然后接下来那么咱们现在呢,第二位二下,那么这个时候他拿到的也是一个对吧集合act list对吧,然后接下来咱把这个对吧给它,对吧生成一下这个是不是我现在at least,然后这里边是放的map呀,对吧,那你现在at least也进来了。啊,也进来了,那这里边现在是演员是不是空的呀,演员是空的,那咱们是不是得创建演员呀,也就是说actor map对吧,一短那怎么来创建呢?那我现在往里面放map集合,那你是不是得创建map对象啊,所以说呢,那咱们现在你有一个map一般实现你们有什么哈,Map是吧?来哈map,那么这里呢,应该是string object,然后接下来咱们的点VR,那么我现在呢,这个是取个名字actor map1对actor map1,然后接下来这里边对吧,咱们现在来了一个我们这个演员对吧,那么这个演员他是不是有ID,有他的名字呀,那act map一点我们现在put呗,这个ID对吧,那么比如说当前呢,是我们这个六六对吧,六六对吧,这个呢,咱们现在这个类型,其实我们是object对吧,你放咱们这个整数没问题对吧,然后接下来那么再往下走呢,咱们再铺的一个对。
12:37
在乎的一个,那么这里还有一个名字啊。啊,这个演员的名字谁呢啊?是吧,哎,天龙八部嘛是吧,那么咱们现在呢,在咱们这里边是吧?那么假如说啊,假如说好像你们没见没看过似的,是不是啊,你们一般记得乔峰是不是净瞎说,是不是你们喜欢哪个版本呢?黄润华版本是吧?好了,哎,那么咱们现在呢,来在咱们这里边,我呢去把这个对吧给它啊指定一下啊把这个东西给它啊指定一下,呃,然后接下来这个我就不再多添加了,就这一个就行,对吧,但是这还不行吧,你是不是还得把这个东西放到我这集合里面去啊,那应该是act list啊,然后点是吧,然后点什么呢?咱们艾对吧,然后把谁呢,把我们这个艾map是吧给加进来。
13:46
这个。就是咱们现在把这些东西啊,做了一个转换啊吧,你们觉得这两种方式哪个爽一点,上面这个直接把这个so后语句对吧,拿过来直接执行这个爽啊这这不是so有一句直接这把接次拿来直接直接爽还是呢?在咱们这里边对吧,直接写这个代码爽肯定第一种是吧,那你想第一种不是说你们一开始就有的,我这是在我这我说来咱们拷贝一下,拷贝过来了对吧,你们现在要写第一种的话,你们是不是也得先把这个思把把这个这个语句写完之后,你才能拷贝过去啊对吧?哎,注意啊,一般的真正在写的时候,那应该是什么,你可能写两遍啊,就你们现在如果说真正在写的时候,一般你在直接写代码,我相信有好多人就马上写,想不上去。
14:37
就这么讲,讲上去他一般怎么办呢?他一般现在这啊,把咱们现在的这个脚本都先写一遍啊,写完之后一看可以查到效果了,然后呢,把这个脚本拷贝过来,就像刚才这样,然后呢,根据咱们现在啊执行的一个我们的杰森,然后呢来去封装我们的对象,一般这么执行是吧,那到底行不行呢?那咱们现在看一看啊同学们,那你想我在这里封装一个对象,封装对象之后咱们是不是得给定一下来,那这个呢,是我们这个目对栏目,然后接下来,那么咱们现在把这目是不是得做为参数传给我们这个build上,对吧,因为我现在这个build它本身你看需要传什么输传一个source,这个source是谁,这个source其实就你要添加的文档对吧,原来咱的文档是不是直接放的是我JS对象对JS字串,现在呢,我放的样式对象它的底层啊,它会把咱们样式对象给转换成我们的森式字串的啊吧,它底层其实会把这些东西转换成咱们杰森格式字串的,对吧,那咱们现在呢就来对吧看一看。
15:38
大家来看一看这个程序执行有没有什么问题,来运行一下看效果啊,那么执行的时候呢,在咱们这里的,他说的这个应该是的指定咱们这个对象类型对吧?那这对象类型呢,那这里可能还有一些问题什么的object对吧?咱们呢给换一下,那比如说我现在呢,在这里换成我们的any对吧?来在这里把这个呢换一下对吧?来在这呢,咱们定义的时候呢,这个呢,也是我们的一个any对吧?然后接下来放个in,然这里边找什么咱们这个object啊,注意看啊,它在这我把这个东西给大家截一下。
16:25
啊,定义完之后呢,咱们再重新运行看一下效果。对吧,哎,那么咱现在先看插入成功没有,一会再大家说咱们这个问题在哪啊来那么咱现在呢,来去执行一下,看一看咱们当前对吧,在这诶没成功是吧?哎,这不对啊,我看一下啊,我知道没成功什么原因了,在这里咱们调的还是一吧,对吧,在他这里对吧,你说不要把它改成二啊对来运行看一看啊,这个进没进到咱们一来测试库里边。好了,那么执行完毕之后呢,再来去查询一下,对吧,再来查询一下,那么查询完之后,咱们现在天龙八部是不是进来了,对吧,而且你看进来咱们这个形式是不是和咱们原来这个形式是一样的呀,对吧?然后接下来再说咱们现在这个错误,刚才我在执行的时候,如果是object的话,是不是报错呀,而且错误提示什么说找到了咱们这个in的类型,但是呢,也在这里,什么object对object这是怎么回事。
17:27
哎,同学们,大家想一想,咱们在Java语言里边对吧?那么本身object是不是所有类的直接或者间接类啊,对吧?但是在咱们scan的语言中,那么咱们这个整个类的结构是发生变化了,最顶层的any,然后是any value,以及我们的any r EF,那么在咱们这里边any value是不是代表咱原来的和原来的基本类型是一样的,对吧?那么n ref呢,是原来引用类型,那么我问大家,如果非得让大家做一个我们比较的话,你说Java的object相当于我们的SKY谁?AMAEF。
18:04
Any还是ref对吧?Any ref,因为你想一想,咱们现在在咱们这里边,在我们这个Java中,咱们现在的基本类型和我们这个object有关系吗?没关系,咱虽然说我们现在object所有类型的一个直接或者间接类,但是和咱们的基本类型没关系啊,对吧?它只是引用类型的类,但是我们现在在子间中,对吧?如果说你要把它做为最根本这个类的话,那么咱们现在这个东西它应该是我们这个in的它的一个负类,对吧?但是这个东西它不是对吧?所以说呢,这块我要想表示任意类型的话,那么这个时候你得用谁呀?你得用我们的any对吧,你得用any,那这样的话你才能够把in的值给我传过来,如果是object的话,你只能够传引用,所以说这块是不是也印证了咱们其实object和IEF是一样的呀,对吧?哎,好了,这个是关于我们现在它的第二种,关于咱们现在呢,往里面插一条数据啊,它的一个第二种方式啊,第二种方式啊,把这个。
19:04
我稍微停一下。
我来说两句
6
666