00:00
前边我们通过页面传递过来的请求参数,那么动态的封装呢,各种的查询条件,那么这个封装呢还没结束,那这个DSL现在只把这一块quary我们做完了,那还有它的排序以及风叶高亮聚合等功能,那们接下来继续来做好,那么接下来就先来做咱们这个排序,这个排序呢,要不要排,还是按照页面我们的这个查询参数,先来看一下我们的这个查询参数,查询参数呢会给我们传入一个sortt字段,如果想要排序,它还会告诉我们按照什么东西什么顺序来进行排的,所以呢,我们接下来就来判断我们这个排序该怎么用。首先整个排序呢,排序一样,我们将所有的东西都得放到source build里边,我们查询呢,在这儿放,那排序我们来找一下,诶,它专门呢也有一个thought,这是来进行排序的,但是我们排序呢,有我们不同的排序规则,所以说这一块的name以及order我们要进行动态判断好。
01:01
排序呢?我们先来把这个删掉,我们来写我们的排序。二,这是我们的第二部分2.1,我们先来做我们的排序。首先我们要不要做排序,我们得根据页面传递过来的参数,如果palm.get sortt页面给我们传来的排序条件,那么就来进行排序,好,String u,我们还是来判断is empty,如果它不是空的,那么就来开始进行排序,Para sortt,好,把这个排序呢条件拿来,但我们页面传递来的条排序条件按照约定呢,它是这么来传的,CTRLC,好,我们来复制过来,它这一块呢,我们必须来分割,如如果按照短横线分割,前边是我们要排序的字段,按照哪个字段排,后边呢,是升序还是降序?所以我们接下来就来进行分割,Sortt,点一个split,好,我们来进行分割。然后接下来分。
02:01
割,我们按照短横线来进行分割,分割出来两个值,然后呢,前面S0就是我们排序要用的字段,后边呢就是升降序,那么接下来就来构建出我们的排序,在source build里边点一个sort sort的name,那就是我们要排序的字段。来我们来看一下DSL,我们来排序sortt的name,相当于我们给哪个属性来进行排序,我们得写上我们这个属性的名字,好我们来复制过来,这个属性名字呢是根据S0来的,所以我们来写上S0,然后呢,它要排的顺序,这一块顺序呢,我们来看一下,它呢是一个SOO的,是升序还是降序,好我们把这个复制过来,但是呢,包括这个升降序,那到底是升还是降,我们也必须按照我们的这个规则来S1好,我们可以先拿到一个我们这个顺序sort order,我们就叫order,那这个顺序到底是什么?
03:01
我们来写上,如果我们SE点一个equals,比如我们就不区分大小写ignore case equals,我们这个asc,这是升序,我们问他等于这个升序吗?如果等于,我们就用这个升序模式,否则我们就用降序模式,比如我们就来写一个decc,好,这是我们要做的排序,那就在这儿,那排序完了以后呢,还有我们的分页,那继续来分页,那这个封页呢,我们来参照我们的DSL,我们把这一块我们都来关掉,来打开我们之前分析的DSL封页,主要是from size from就是从哪开始,关键我们这个页码呢,它是算索引的,从零开始,Size呢,有多少个,所以我们还得判断我们这个风叶,风叶呢,我们就不判断了,我们让它默认,即使第一次过来我们都用第一啊。而且呢,封页的大小到底有多少,我们也给它指定一个固定值,那比如在这商品在这进行封页的时候,来写一个浪,那们这个商品的page size们这个page置size,那们分页的大小,分页大小呢,每页假设我们来显示16个数据啊16L,那前期为了我们分页测试方便,我们每页呢显示两个,好接下来来到我们的这一块,我们想要做分页还是在source build里边,瞧枫叶那就有一个from和size from是多少,我们放到这儿,Size呢是多少,我们来也放到这来写一个from,以及我们的size size呢,总是我们这个常量ES constant点,我们这个size就是一个它,而这个size呢,它是一个整数,那我们把我们这个改成一个整数,因配这好我们来写一个啊,那还是来到这,这是我们的风叶。而这个from呢,要进行。
04:55
算,如果我们每页五个,我们每页五个size,比如我们来算一下,每一页是五个,如果我们想要去第一页,如果我们配置number,页面给我们传了一个一每要去第一页,那么from应该从几开始呢?那应该是从零开始,然后呢,每页size呢,每页是五个,然后呢,如果我们是第二页,页面给我们传了配置number是第二页,那么到from,那就应该是从那查五个,从零开始查五个呢?那就是01234。
05:29
那接下来再要查五个,那么所以呢,又从五开始了,我们来查五个S,来写一个五,所以这个from的计算方式,那就是用我们的页码from,哎,我们以前做过分页都知道,From呢,是利用我们的页码配置number减一个一配置number减一,好,我们减一,然后呢,再乘以我们的page size,算出我们要去第几页page size,我们来写一个size。
06:00
比如我们是第一页一减一是零,零乘五是零,那我们从零开始,第二页二减一得一,一乘五得五,我们从五开始,所以我们这一块我们就按照页码来计算得到就行了。好,我们前端呢,会传入我们的页码get page number,就算不传,默认是第一啊,那先减一个一,好,我们先让它减一个一,来用小括号把它包装起来,小括号,然后呢,再来让它乘以我们这个分页的大小size,点一个product page size,好,这就是我们from的起点,这是我们的分页,分页做完了以后呢,我们还有高亮,好,我们这个分页也做了,排序也做了,还有我们的高亮,那这个高亮在这儿,我们要怎么做?来继续2.3。来进行高亮,而且这个高亮呢,大家注意什么时候要用,也就说只有当我们传了这个keyword的查询条件模糊匹配的时候,那才有必要写高亮,否则模没有模糊匹配,那高亮也没什么意义,所以呢,我们在这儿高亮要做,我们得先来做一个判断,如果我们传了keyword passwordword,诶,我们这个power点一个get,我们传了这个keyword查询参数,好,我们用它来判断,String YouTube string us点一个不为空,如果它不为空,不为空呢,我们就来给他进行高亮,高亮呢是在s build里边。
07:33
有一个叫highlight。主要呢,这有一个叫highlight,来传一个highlight builder,那这个builder呢,肯定又有builders,我们来看一下有没有high light们的builders,我们这个build我来查询一下highlight builder,我发现这个呢没有builders,那我们就来直接用它的builder我们来进行构建就行了,但是这个builder要怎么构建,我们来点进来,来看它有没有构造器,构造器里边呢,主要就是我们要按照哪个属性进行高亮的,包括它的这个前后缀都是什么,那么就先来创建一个这个builder,有一个high light builder,好把这个builder呢,我们来创建出来,然后在下边需要这个build,而build的真正的内容我们来做出来,好,Build里边首先点一个field,我们按照哪个高亮哪个属性,那field的里边呢,就有一个叫SKU title,那相当于要高亮这个属性,好,我们来写上了,包括呢我们高亮。
08:36
用的我们前置标签以及后置标签是什么,我们也可以来加上,好继续build,点一个前置标签pre,好我们的前置标签我就直接来写上我们之前规定的这一堆前置标签,我们是一个color red的加速标签,好我们放在这儿,这个不在页面显示,没有啥效果,在页面显示了,我们就很明显能看到了。还有我们的后置标签,有的点一个post ta,那后置标签呢,我们来也写上是B标签的结束标签,好我们相当于把这个高亮我们就做好了,它没有那个builders,诶只有一个这个builder,我们直接拿来用,这个高亮做好以后,我们这一块的基本功能又完成了,接下来最复杂的又到了,我们做聚合分析,那这个聚合分析呢,我们先不做,我们先来给大家做一个简单的测试,他们写的这一堆代码能不能用,那主要想要使用,就是要拿到它的这个DSL语句。
09:36
所以呢,我们再来返回之前,我们直接把这个to string,把它的这个build给我们构建出来的这个DSL语句,我们拿过来看一下,好,这是我们这个build,把这个build呢构建出来的DSL语句,我们看能不能拿到,那这个构建的DSL,如果按照正常情况,我们DSL构建成功以后,那我们直接就可以在控制台打印出这个DSL,我们把这个DSL复制来,放到我们这一块,肯定就能查出数据,而这个DSL呢,所有东西又是动态构建出来的,来调用我们这个方法,而我们这个方法要用的参数都是从请求里边传过来的,Controlrler里边传过来的,好,我现在呢,先来启动我们这个search试服务,那这个方法的测试呢,我们现在为了方便,期间我们直接拿postman来测就行了,那postman给我们这个发请求,发请求我们来带一些我们指定的这个数据,好,我们现在就来测试我们。
10:36
的这个接口主要呢,请求有这些数据们按照要求来带就行了,那现在来看我们的postman的效果,好好我们来准备在这来测试,请我们创建一个新的这个即可,你就要测试我们,比如我们这个检索服务,测试检索服务的所有东西,好我们先放在这,然后呢,我们在这里边。我们先来创建一个请求们来测检索服务,那检索服务我们先来看好它,一切启动成功,这时呢,一万二端口,我们给一万二端口来发送请求,来到这儿好一万二端口发送请求,发送什么样的请求呢?那先来到CTRL了,发送一个list htm。
11:16
好,我们发送这个,如果我们什么都不带,我点一个send,那么这块呢,返回200也有页面,我们主要来看控制台构建的DSL,把这一块呢复制过来。那么什么都不带呢?构建的这个DSL非常短,把它复制过来,那么在杰森的某一个格式化里边,随便看一下杰森。格式化工具。好,那在这儿呢,给大家看一下我们构建的这个DSL里边默认有什么东西格式化,首先呢,默认有封页,相当于查第一页数据,然后呢,查询默认只有一个查询条件,就是查询我们有库存的,那其他这些属性呢,代表什么意思,大家都可以去ES的官方文档去,来在这儿直接来进行检索,检索这个属性,那这个呢,是调整它的得分比率的,好我们直接把这个DSL复制来,按照一切正常的话,我们在这儿要查询就能查得到,好,我们来get,来查鼓励。
12:13
Mail product,一个杠search走,我们用我们构建的这个DSL来查询走我们发现呢,查询有库存的,那总共查到了八条数据,那如果我们要查询没库存的,来写一个false来看一下走们查到了18条,那总共呢26条数据,没啥问题,好,那查询有库存的走,那么相当于传了这个条件,那就是对的,那现在我们把全量条件都传上,因为我们发的get请求没意思,页面可能接收这些查询数据,首先keyword好,我们来封装上keyword,如果我们来带了keyword,我来查询华为,带了华为两个字的,好,那再来查询它的三级分类是我们指定的,我们手机分类呢是225 225,好,我们来点一个查询。
13:03
那还是来看我们构建的DSL语句,在控制台把这个DSL我来复制过来,那么同样的给我们这块控制台我来一复制,那就应该能查到东西,来看我们这次构建的DSL,我们来给它自动的格式化一下,那这次DSL里边就有mask,有match来,我们是来查瑞华为的这块呢,都是它的一些默认属性不设置,那都是这个值,我们可以不用管好,然后呢,接下来filter又来查了一个三级分类,ID是225的,然后呢还查了带库存的来进行查询,看有没有数据走好,我们查到了这个数据没什么问题,那么现在还想来查它的CPU品牌是海思的。并且CPU型号是70970的,相当于我们要传两个属性,那么接接下来按照我们的要求,我们的要求呢,是这样子的,如果想要按照多个属性来查询,那就必须来传我们这个叫at t s等于什么?好,我们来传at t s等于,那现在呢,想要查他们呢,是这样15号属性。
14:14
必须是海思的,好,我们的要求就是这样,我们拼的时候呢,就是15这个属性值必须是他,或者比如我们是A13,哎,我们这个品牌的,这是我们第一个属性,走我们来进行查询,我们来看封装的DSL,我把这个DSL复制过来,CTRLC我们来放到这一块,我们来进行运行,好我们把这一块的条件我们来删掉,替换成我们新的条件来,还是格式化一下。我们来看我们这个新的条件,这个新的条件呢,除了must match,我们按照模糊匹配外,还有按照品牌,然后接下来看我们这个嵌入式的这个查询属性,ID是15,而它的值必须是我们指定的这两个值的,好我们现在肯定能查到结果走还是这八条记录没问题,如果我们再来多传一个属性,比如是16号属性,必须是970的,那么就可以在这儿继续at t RS,而且每一次多传的,它会自动在这一块拼上我们这个结果,好,那现在呢,是16号属性,那必须是我们这个叫华为麒麟九七麟的值,是一个全量匹配,我们不做模糊的,好我们来进行查询,相当于两个at tr封装值,现在来看那封装的DSL,把这一块复制过来。
15:34
来重新放到我们这一块,看是不是有两个我们这个属性的查询构建好,我们在这儿呢,来格式化一下,我们查询的华为在这有,然后呢,Filter我们按照分类的ID有它的,然后呢,我们按照第一个嵌入的查询是15号,必须是这个值好,没问题,第二个嵌入的查询我们看到16号必须是这个值也没有问题,那现在来查,因为这个都是我们基于已有的结果写的东西,肯定呢还是有结果的好,我们来查还是有的,一切都运行正常,也没有报错,那么这一块呢,就是对的,包括如果我们带了价格区间好,比如我们来看来带了价格区间,价格区间我们的要求就是短横杠分割之类的好,假设我们现在查6000以内的,那我们就来写一个杠,6000杠。
16:28
6000来看一下效果z send。我还是看我们的DSL语句,我把这一块呢复制过来。看一下我们的DSL,我们每加一个条件,看它都对不对,好,我们把这个DSL呢加过来走。然后呢,我们重新在这儿。格式化一下,来看一下这个结果,模糊匹配的在这有没问题,查询三级分类的好,还有我们属性的查询一个,属性的查询两个,接下来我们要按照价格区间的,这是库存的和价格区间,不过我们这一块发现我们from呢,它给了一个空值,To呢写了一个6000,相当于我们在这一块来做价格区间的时候,来我们留一下价格区间在这儿,老版的属性呢,我们叫GTT,现在新版呢,变成了我们价格区间的from to,关键就是这个from没值,我们来看有没有东西啊。
17:23
走诶,我发现呢,还是有东西的,就是呢,即使我们只传一个属性,它的from two都是有东西的,只不过有一个东西没值而已,然后我们来看是不是都是在6000以内的手机,5799。包括5799没问题,而且我们还做了枫叶高亮这一块呢,也都有好,那这是我们价格区间,那我们看一下6000以上的,我们这个价格区间来看这种是不是对的,走来害怕这个价格区间它给我们封装错了,把这个价格区间重新拿过来复制好,我们在这一块呢,把这一块还是删掉来现在主要来看一个价格区间是6000以上的,走来我们一直往下翻来看价格区间6000以上的,我们发现呢,兔那就是一个空值,那兔是空置的,能不能查到,我们来看一下走我们看现在是不是6000以上的手机好,现在呢,查到的都是6000以上的没问题,那么价格区间的封装也都是对的,那我们接下来就把所有的这个属性我们都测试通过了,确实根据我们页面传递的,我们可以动态的我来构建出所有的查询条件,其他这个分页页码的,还有品牌ID的我呢就不加了。
18:33
包括排序条件的,大家自己呢,可以来做一个测试,那么下一节课呢,就继续来把这一块查询排序高亮都做完了,我们就来做聚合。
我来说两句