00:00
那前边呢,我们编写了这个分析,我们响应数据,将响应数据呢封装成我们指定格式的这个方法,那这个方法呢,我们在下边编写了很多,接下来我们在这就打一个断点,我们将它呢重新启动,我们来进行一个测试,那这个测试呢,我们还是以postman为准,能让postman来发送请求,那为了能查到好多数据,我们来看结果,那我就将这些所有的约束我全部去掉,那这就是查询所有,好,我现在呢就来测试它,我们现在将控制台来清空,来准备来看我们一步一步的数据是不是都是正确的。好,我们现在来发送请求来进行测试,我们来到post麦走send请求发过来,来到我们结果的抽取方法,好,我们现来创建了一个result对象,我们来准备封装所有的结果,里面的所有数据都是空的,然后呢,我们来一一封装,首先拿到第一个hit,我们拿到所有命中的记录,在response里边,好,它里边呢有命中的所有记录,这个所有记录里边呢,我们先想第一步要封装所有的商品,所有商品呢都在这一块叫hits里边,好,那接下来呢,我们就来封装,我们来还是来下一步我们来进行封装,我们准备了一个集合,然后呢,我们来拿到这个hits,这个hits里边呢,有两条记录不为空,所以呢,就进入我们的for循环,好拿到我们第一个hit,第一个hit呢,它有一个叫get source and string,相当于我们拿到命中的第一条记录,里边的真正的内容就是这个source,这个source内容呢,我们看到这个内容呢,确实是一个杰森字符串。
01:37
只不过这个杰森字符串它很完整,我们来看一下,它还包含了刚才返回的这个。好,我们来看这个hits里边,我们命中的第一条记录在这,这是它的真正信息,而我们真正命中的第一条记录,我们发现它返回的还有index type,还有ID,所以我们看到这个字符串,这还有index。这些信息,所以我们想要在这儿尝试封装,肯定呢解析不上我们的这个ES model,我们来看一下能不能解析上,诶我们发现呢,这都是可以的,那一切封装正常。
02:09
那我们就呢没有写错,那说明这是对的,好,我们全部封装正确了,我们可以直接从这个source string里边来看一下,这个有index in type有这些。它还可以自动的提取到这个杠ho里边的这些数据,给我们一一封装上,好,没问题,好,对了,我们之前看的这个hits有index的,这是当前hit命中的记录,然我们真正的这一块的数据是source and string,这是我们真中的数据,这是没问题的,好,然后呢,我们相当于封装了第一个数据,我们的ES model封装正确,然后呢,接下来第二个我们还是一样拿到它的source and string和at t RS,我们来看这at t RS什么内容都有,然后呢,继续在这儿封装成model,好,封装过来也没问题,然后呢,把这两个封装结束以后,我们就结束了这个ES model里边我们来看现在就有两条数据,这相当于我们查出来的商品信息,这都是ES中保存的,好,那这两条数据呢,我们放在里,那么第一步就成功了,第二步来分析所有商品涉及到的所有属性信息,来,我们来查询,首先我们得到at t ragg,我们来看一下。
03:21
在这个internal里边,除了命中的记录里边,我现在还想要获取一个叫at t ragg,它是一个嵌入式的at t ragg,好,我们先来看能不能获取到,走at t ragg我们可以获取到,没问题,我们还想从at t ragg里边再来get它的agreegs,就是这里边儿,从它里边呢,我们再来获取到我们的at tgg,那我们这个里边呢,只有一个。就叫at t rigg好,我们来看一下能不能获取到走那at t rigg也能获取到pass long terms就是它好在这个GG里边呢,我们获取它的bucket们相当于聚合有两个属性,那好,第一个bucket我准备好了一个VO封装,那第一个bucket呢,那就是第一个我们来看bucket获取到第一个K的值,这个bucket第一个K呢是15,那么就来走它的这个atd 15没问题,然后呢,我们还想得到属性的名字,属性的名字呢,又是它里边的聚合的一个,我们这个叫属性名聚合a tr name agg,所以呢们获取到当前bucket这条数据的所有聚合里边的at tr name agg好,就在这没问题,然后呢,再来获取到at t name agg的这个8ETS桶里边的第一条数据的K,因为我们这个名字肯定只有一个,所以这一块呢,我们来看能不能获取到,走at tr name好CPU品牌我们也获。
04:50
就到了没问题,然后呢,接下来我们得到属性的所有值,所有值呢还是在这是at try6agg的,现在我们变了一个,现在来获取at tr y6agg,然后呢,我们顺便给它便利循环它的所有结果,好我们直接给它封装提取走,来看提取来的这两个值,现在呢,只有一个值,那叫海思,好,那就叫海思没问题,我们也是查出来了,那接下来我们来继续来看这个at tr agg里边确实只有一个海思没问题,好那么这个属性我们就封装好了,第一个属性好,我们把它都封装好,是CPU品牌,它有这么多值,还有我们第二个属性,我们在这个除了有15号这个属性外,我们这个属性里边呢,还有16号属性,来继续来封装好,我们看得到属性值16号没问题,属性的名字是我们的CPU型号没问题,它所有的可能值我们打开,它现在呢,是我们的这个。
05:50
70970好,没问题,这一块都是对的,好,我们让他来查询,走走,全部封装好,放进来好。那么至此呢,At ts我们里边呢,肯定就有数据了,我们看到它有两个,这封装了我们所有的可能的属性集合,好把属性放到里边,还有我们的商品信息,我们继续商品涉及到的品牌,品牌呢那就在我们所有的这个聚合里边,我们呢,专门还有一个叫品牌聚合,品牌聚合在最下边来看,这个叫brand agg,好获取brand agg走,现在brand agg也能获取到,没问题。
06:31
然后呢,便利它里边桶里边的数据,看有多少种品牌好,我们来遍利没问题,然后呢,现在来看第一个品牌叫九号的品牌,品牌ID是九号,没问题,得到了品牌的名字呢,是在它的子聚盒里边有的,我们聚合了两个,一个叫品牌的图片,还有一个叫品牌的名字,我们都能获取到他们的值,而且品牌的名字图片都只有一个,所以我们直接拿到它名字图片这个聚合的内容里边,第一个把它string拿来,我们就来看得到的品牌名,品牌图片来看一下名字没问题,图片这块也都是好的,好我们接下来往下走,那这一块我们品牌就封装好了,品牌封装好放到我们这个所有的可能品牌里边,最终封装到我们这个结果里边也没问题,那接下来我们就来看我们分类的聚合,我们在所有的聚合里边,还有一个分类的聚合在最上边,我们可以来获取到分类的聚合。
07:31
我们还是准备我们所有的集合来封装我们所有可能的分类,在分类的集合里边,八里边是所有的分类,好我们拿到它的桶进行遍历,首先拿到它同里边的第一条数据的ID,这就是我们分类的ID,好我们自己把它转过来也没问题,225,然后想要获取分类的名,得在子聚合里边有一个叫。Catallo name agg的,好在所有的聚合里边再来拿到catalog name agg的,把它转过来,转过来以后呢,我们获取到它buckets里边的第一条数据的key内容,那么就来获取走这个key内容。
08:11
来看一下,它叫手机好没问题,然后呢,把它这些都放进去,那么这个VO里边相当于它的ID225,它的分类名,手机都我们都放进去了,最终这个也放到了这个catalog Vs几何里边,放进去以后呢,接下来我们返回走,我们这块呢就封装好了,那接下来我们再来封装我们的页码,页码是前端页面传过来的,那现在当前是第一页,所以我们来看result里边封装的这个值。来看这个页码,现在是第一页,好没问题,好我们这个总记录数,我们看能不能拿到总记录数呢,八条记录好,我们把这个总记录数也设置进去,包括我们来计算总共有多少页。我们现在呢,总共是八条记录,每页两个,那现在就应该有四页,我们来看得到的结果四页没问题,总页码我们也设置上了,最终我们就把这个result已返回,那我们就能用这个信息了,好,我们来给它放行,好这一块呢,我们就全部封装好了,虽然说全部封装好了,但是这儿还有什么问题呢?好,我们先来把这一块所有的东西,我们把这个所有的串。
09:21
我都来给他删掉。我们现在不加这么多的查询条件了,好,不加这么多的查询条件了,我们现在来查全体,我们发现呢,现在在这一块有一个问题来到这儿。就是我们之前设置过高亮,高亮呢主要就是我们商品的标题,我们要整成高量,但我们这样默认封装的时候,我们来看这个商品的标题并不是高量值的,那想要高亮我们还得自己再来封装一下,怎么封装呢?我们看我们这个命中的结果,命中的这个结果里边,好,这是第一条记录它的这个source,就是它记录的原本信息,那我们的高亮信息我们有没有呢?我发现这一块的高亮这是highlight,这是一个浪的,但我们想要高亮呢,我们说带了检索条件才会高亮,所以我们这个有了keyword,加上它以后才会有高量,好我们先把这一块呢,全部都放行,我们直接放行结束。
10:20
好,我们现在来加上高亮,走send来看高亮的时候返回结果,那返回的这个结果里边,我们发现这个highlight feels,我们要高亮的这个字段里边确实有值,而且它的整个这个value值就是我们想要高亮的这个内容,这一块呢有我们完整的内容,那么现在就希望把这个内容呢,我们全部拿过来,所以我们在这儿封装ES model的时候,我们还要判断,如果说我们有高量的信息。所以来到我们这个hits里边,Hit我们当前命中的记录,我们来看它有没有highlight,诶我们这儿有一个,我们这呢有一个叫get highlight fields,获取我们所有高亮的这个属性,但我们这个高亮的属性呢,我们现在默认就只写了一个,那么先把它获取来,获取来呢,我们来点一个get,我就获取来我这个高亮的属性,因为我们有一个高亮的属性叫SQ title,所以呢,我把这个SQ title这个高亮属性拿过来,我们来看它最终高量的这个值,这个SQ title的高亮值点一个。
11:23
它的这个真正高亮的值,我们来看还在他的这个fraggments里边,这个零号记录里边有一个完整的test,这个test我们来给大家看一下VI安姿,我们这个test,好,View或者edit test们来看一下这个高亮值,诶确实就是我们想要用的这个内容,我们把这个华为在这儿呢加粗加红显示了,所以呢,我们相当于想要拿高亮内容,拿到我们这个SQ title的这个高亮,在得到它的fraggments,这个fragments里边呢,可能有很多,那么现在呢,只需要拿到第一个内容,这个fraggments,它是一个数组,拿到它的第一个,直接把它的这个文本内容拿到就行了,点一个string。
12:09
这就是我们要高亮的内容,把这个高亮的内容我们要设置进去,我们是给ES model.set SQ title,相当于替换成以前的这个抬头,这是我们要高亮的抬头,而且呢,这一块的分析我们要看我们有没有带keywordd检索条件,如果说我们传过来的这个参数,它带了这个keyword检索条件,那肯定就有高量,所以呢,我们就来string u string us,如果它不为空,我们的这个检索条件keyword不为空,现在按关键字检索了,我们就来给它设置上高亮的字段,如果没有我们就不设置啊,所以我们这一块呢,得稍微变一下。我们把它呢全部重新放行,我们来重新来测试一下,我们来看我们这一块能不能正确的响应好,我们来重新send,那现在呢,带了华为检索,把这个断点呢,重新打一下,好这个断点刚才失效了,那么现在呢,改了代码就得把这个重新启动,重新启动呢,我们来重新打一下断点,主要是我们这一块要进行设置高亮,那这个高亮的信息内容,我们看能不能正确的获取到。
13:21
那获取到以后呢,我们以后返回的所有的商品,那就是带了高亮标题的,如果我们来在这来按关键字来进行检索查询的话,好,我们现在来进行一个测试,我们先来看它啊,保证它现在启动成功,来准备来进行测试,点一个send。好,我们现在来看。现在呢,我们现在进来了,我们来走,我们来直接走到我们这个高亮的结果来看一下,好,我们现在检索条件确实不为空,我们拿到这个高亮的SQ title,这SQ title呢,有数据得到它的fragments的第零个数据,我们点string,诶,这就是我们高亮的真正内容,把这个title呢,我们就设置上了,那整个ES model里边,我们真正的这个title来看一下,它呢就是加了我们这个高亮标题的,好,那这一块呢就全部没问题了,那我们所有返回的数据呢,我们相当于就给前端页面准备好了,那么下一节课就来改写页面,把它们联动起来。
我来说两句