00:00
讲的内容和我们在讲买so的时候给你们介绍什么select insert update delete,其实是一样的,只不过呢,他用的是咱们那个DS里边的DSL吧,它专门的一些我们这操作语言对吧?呃,然后接下来咱看一看啊,关于我们这个聚合操作对吧?关于咱们聚合操作,呃,那么如果说聚合的话呢,它主要干什么对吧?就是对于我们这个数据来进行分组对吧,或者统计对吧?那有点类似于谁呢?有点类似于我们circle里边的有BY是吧这样的一些聚合函数是吧?呃,那么咱们现在呢,注意啊,那S里面一般聚合函数都有哪些啊,看看对吧,大。然后呢,咱们这个avg啊,Mmax对吧?这长区函数对吧?然后呢,结合我们格一起来用啊,那么我们现在al它有一个比较强大的功能啊什么呢?它可以同时返回咱们搜索结果以及呢,聚合计算的结果啊,什么意思啊,比如说我如果要是咱们这个S的话,大家想一想,咱们呢,比如说我要是select啊,比如说我现在select这个avg吧啊然后呢,咱们这个S工资啊,From emp表对吧?那么如果这样查的话,你是不是得对他做一个group分组啊,比如说按e p number的或者dp number嘛的dp number来进行分组,对吧?那么咱们查出每一个组每部门的一个平均工资,那么咱们在显示的时候,大家想一想,你要显示的话,你是不是只能把咱们现在平均工资给查出来,顶多再加一个什么呢?顶多再加一个句。
01:46
和字段啊d BT number对,再加别的是不是查不出来了呀,对吧,就我们现在如果买so的话,这东西那只能对加上聚合函数,以及呢,咱们分组字段,别的内容呢查不出来对吧?但是呢,如果是我们以S的话,它不光可以查出我们这搜索结果,还可以呢,把我这个聚合的计算结果给查出来,对吧,这个呢是比较我们这个强大的对吧?那么具体咱们现在来通过案例来演示一下,比如说啊,我现在有需求,这个需求干什么呢?说取出每一个演员对吧,那么一共参演了多少部电影啊,取出咱们每一个演员,那一共呢,参演了多少部电影,对吧?来到咱现在呢,把我的需求拿过来。
02:32
然后大家看一看,具体这个东西呢,应该怎么来实现啊,具体的应该怎么来实现啊,在这里啊,我现在取出每个演员供参这个参演多部电影,思路是什么样的啊,比如说我现在我不是你来search啊,如果说我现在要是我们这个啊买搜狗的话啊,买so的话,那么这个时候咱们应该怎么做?分按照演员进行分组,然后求咱们这个数是就可以了呀,对吧?哎,就看演员分组,然后看咱们现在这个演员对吧?分组之后当前这个这个组里面有多少记录就可以了呗,对吧?那么我现在呢,来查询一下是吧,查询一下呃,那么如果查询呢,来这个前面是一样的,还是呢,去查询我们当前这个索引,然后接下来在咱们这里啊啊去做一个search操作,然后目前呢,这个操作是查询出我们这个当前的这个索引中的所有文档,把所有记录给查出来了,那我现在是不是得分组啊,对吧?那么怎么来进行分组呢?那么这里有一个叫adds对吧?那么这个AGDS呢,是我们现在要进行聚合操作,注意啊,在这里我们现在呢,这个AGDS它呢要做我们的聚合,他表示你现在要做它聚合操作对吧,那么这块呢,他给的提示你是来给你这个聚合取个名字呀,比如说叫Y。
03:55
名字随意取啊,就当前这是我对现在要做个聚合操作,那么你要做什么类型的聚合呢?咱们分组是不是算一种聚合呀,对吧?那我现在呢,想干什么,我想去分组对吧?那么如果分组的话,这里边来看其实有很多啊,你看A相关的,然后呢,比如说咱们现在跟体相关的对吧?那么其中咱们的分组啊叫什么呢?叫term,这个term上节课咱们好像接触过吗?用过看准了啊,上节课咱没接触过对吧?那么咱们上午节课接触的是什么?接触的term,对这个term是什么,什么精准匹配呀,对这个term呢,是我们这个精准匹配啊,这个term是精准匹配,然后呢,咱们现在呢,现这个后面多了一个S对吧,多了一个S对吧?那么它是干什么的,它是要做聚合操作,相当于谁呢?相当于我们这个感Y。
04:55
啊,相当于我们的个be啊,那么接下来咱看一看呗,在这里你要按照谁来进行聚额操作呢?人家是不是给你提供好了这个file的呀,那我当前我应该按照我们这个演员的名称对吧,来进行一个我们这聚合对吧,然后接下来咱们现在呢去执行一下,那么执行的话呀,这个时候他报错了对吧,那么这个时候你看一看这个错误对吧,你看这错误,这个错误应该呢,能够尝试去看到误。
05:44
可能什么原因呢?类型是吧,对吧?那这个和类型有什么关系对吧?大家注意咱们本身呢,这个演员的名称是不是字符串,那么字符串在底层存的时候,其实是不是存在两种类型,一个呢是test,另外一个是keyword啊综上底层呢,在存储的时候,一个是test,一个呢是我们这keyword,那么它有什么不一样的地方呢?这个test它是分词的,对吧?然后咱们现在的keyboard呢,是不分词的,那你现在要按照咱们EF分这名分分组,那你说我需不需要分词的说不需要,所以说呢,那这个时候咱们选的时候呀,那应该是对吧,选这个对吧,就是说我现在不需要对演员名称呢来进行分词,对吧?那么这个时候大家看咱们现在呢,它的一个查询结果,一共呢,命中了我们现在三条对吧,命中三条,那么他把咱们当前命中这三条呢,给查出来了,那么同时呢,除了这三条数据之外,大家看这块呢。
06:44
还有聚合的信息,就是说咱们这个返回结果,除了包含咱们聚合信息之外,还有咱们的数据,如果要以前咱们零买搜里边上面这些东西肯定没有,他只有聚合的内容,对吧?但是我们现在以来是除了聚合内容之外,还把他们查询数据给展出来了,对吧?那么在他当前数据里边呢,A谁张涵宇对吧?他这个蔡电影两部,然后呢,还清对吧?这有一部,然后张丹峰有一部,然后张毅对吧,这个呢有一部,对这是什么?这是关于我们现在啊,他的一个聚合啊,对我们的数据呢,来进行分组啊,对数据进行分组,呃,那么接下来再往下啊,再往下,那么再往下来看谁呢?这里还有个需求,说每个演员呀,参演电影的平均分是多少,那并且呢,按照咱们的平均分来进行排序,对吧,这个是我第二个需求,每一个演员参演电影的平均分,并且呢,按照平均分来进行排序,对吧?那么这。
07:44
这块咱们应该怎么去实现?那就来呗,咱们现在查询对吧,最起码咱们前面那个东西啊,能把它写出来对吧,然后呢,这里做一个searchch对吧,做一个我们这个search查询,然后接下来,那么我现在如果想求出每个演员参与店影平均分的话,大家想想是不是还得按照咱们的演员来进行分组啊,对吧,那咱们来呗,在这里我们呢,要进行我们这个分组,分组是不属于聚合操作,所以说呢,那这里那肯定是ADS对吧,然后接下来,那么咱们现在分组干什么呢?在这里那就个人的组在内,按照演员的名字呀,来进行一个我们的聚合,对的聚合类型也是分组,分组应该是terms对吧,分组应该是terms,按照谁呢?按照我们现在啊这个演员对吧,他的一个名称,那应该是我们这个actist的name keyword对吧,来进行分组,然后接下来对吧,那在咱们这里。
08:51
边对吧,我分完组了,那么分组之后呢,那默认情况下,它这里边对吧,这个显示十条数据对吧,显示十条数据,然后接下来那我三走之后呢,我是不是还得的要排序呀。
09:05
对吧,数量排序对吧,也就是我现在呢,这里还得想办法呀,对分组数据进行排序对吧,那这块应该怎么来做对吧,这应该怎么来做对吧,那你就想呗,那可以排序的地方,第一个在咱们这里,诶好像没有对吧,现在第二个在咱们这里边对吧,Term完事之后,然后呢,Start行业也没有对吧,就是我现在怎么样去排序对吧,怎么样排序这样一个问题,那么另外一个也是还的求平均分的呀,对吧,所以说我现在在咱们这里边,其实呢,对吧,有很多操作我呢得去完成,对吧,平均分在哪求呢?你不觉得。这是聚合对吧?表示我当年做聚合操作,其中呢,咱们这里格BY这是个聚合操作呀,短长器来,那么咱们现在除了它之外呢,在咱们这里边term的分组,那么分组之后呢,那么这里我还应该再去做一个事,对吧?那再去干什么,再去做一个聚合呗,对这个聚合呢,那比如说听定的就是avg-F对吧,Avg scar求平均分,这你取的名字啊,然后接下来那么这个time是什么样的对吧?你当前在聚合的时候,那就不是我们现在这个分组了,那应该求平均分,按照哪一个对吧?按照什么来求平均分呢?是不是咱们现在这里应该是豆瓣S号了对吧?来求平均分对吧?那接下来咱们现在呢,这里对吧用平均分了对吧,然后呢,自然组了是吧?那么接下来咱们呢,得去我们这个这个排序了啊,得去我们排序了,这个排序怎么做呢?大家注意看,在咱们这里有一个我们这个order对吧,因为我们现在想啊这个排序。
10:43
除了so的操作之外,在咱们这个这个my serve里边,这个排序是不是有order了对吧?所以说呢,那我现在在咱们这里边,那要干什么呢?要进行排序对吧?那么如果排序的话,那么你现在按照谁来进行排序呢?咱们是不是要按照平均分来进行排序啊,平均分在哪?是在下面求出来了,看成C对吧,看成V对吧,我现在要按照你求出来的平均分来进行排序对吧?现在呢是升序对吧?现在升序对吧?那这样的话,咱们现在可以看到对吧?那么他在咱们这里边对吧?把每一个演员他所参与的电影他的一个分数对吧,然后呢,做了一个我升序的一个排序啊,做了顺序排序,那么整体咱们现在来看一看啊,当前的结构啊,整体咱们现在当前结构,其实这里是不是涉及到两个聚合呀,对吧,第一个咱们干什么呢?第一个咱们要做我们的分组,注意看啊,我现在做一个聚合,这是干什么呢?从这到这表示我做第一个聚。
11:43
干什么要对我们的数据啊进行分组对吧?哎,把相同的演员呢放到一组,那我给我当前的剧合取了一个名字对吧?那么从这块到这儿,它表示的是我们现在的它的一个分组操作,对吧?那么分算组之后,你是不是要对咱们当前分组之后的数据,每一个组的数据来进行聚合呀,所以说呢,在咱们当前group by这个分组的内部啊,咱们干什么呢?又做了一次聚合对吧?在咱们这里边我又做了第二次聚合,那么这个聚合你要干什么呢?我要对咱当前组的数据啊来求一个平均值,对,按照哪个字段求平均值呢?按照我们现在豆瓣评分来求平均值,对吧?那么当前你这个操作是不是在咱们当前分组之后做的呀,对吧?然后你给咱们平均分取了一个名字,就那么整体我分组之后,你还要干什么呢?我除了整体分组之后,我要对它呀,对我这个分组数据做一个排序,按照什么排序呢?就是。
12:43
你现在求的平均分来进行排序,所以说这块呢,要稍微的啊难一点点。啊,那么一般在写的时候呢,搞清搞不明,搞不清楚这个逻辑线动关系,第一个是干什么,第一个先按照咱们的这个名字来进行分组,对吧,那么分完组之后呢,在咱们当前组内对吧?那么对于我们的平均分呢,来就对我们那个豆瓣杠来求平均分,然后记起来,求完平均分之后,咱们呢,来用平均分来做一个排序啊这个呢,是属于我们的聚合操作啊,这个属于我们的聚合操作好了,那这样的话,关于我们现在这个查询的一些基本操作呢,就完事了,大家下去呢,把这个一定要练,练一遍啊,一定要练一遍,来我接下来把这个停一下。
我来说两句