00:00
前面我们测试了给ES中保存数据,那接下来呢,我们再来测试如何从ES中检索数据,那文档里边其他简单的这些增删改,比如按照ID查询,包括删除这些呢,我就不测试了,大家照着接口文档来做就行了,也非常简单,我呢来做一个复杂的检索,我们所有的检索呢,通过来参照search API,里边有一个search API,我们要进行一个检索,所有的检索呢,都从这里开始,Search request。它里边呢,包含了我们所有对文档进行的这些检索操作,一比如我们之前用的这些聚合等等也都有,这呢有一个最基本的检索事例,那我们想要做检索,首先我们得构造一个search request,也就是我们的检索请求,那检索请求里边关键我们有DSL语句,假设呢,以我们以前的这个检索为例,来做一个复杂的检索操作,比如就是前边我们查到所有,并且按照年龄聚合求平均薪资,我们现在呢想用Java来完成这个功能。
01:06
那想要检索呢,先得构造一个search request,这是我们的检索请求,接下来所有的DSL语句,这些语句呢,我们要通过有一个叫search source build,通过它来构建出我们这些DSL,比如我们这有match or query查询所有等等等等,那该怎么用,我们来测试一下,我来在这我来创建一个新的方法来测试检索功能,CTRLC复制过来,好,我们这个呢,就叫search data。Search data,那我们的这个检索呢,首先要做的第一步创建一个检索请求,创建我们的检索请求,那我们需要要做的是有一个我们叫search request request啊把这个search request我们先创建出来,然后呢,我们看request里边有什么,包括我们要从哪检索等等之类的信息,我们都需要呢,在这构造。
02:04
那一开始构造呢,我们这有一个叫Indies,好,你点一个,我们就从哪里检索,我们要指定它的索引。当然我们也可以从多个索引一起来检索,好,那我来指定索引,我写一个bank,我们要从银行这个索引下来检索数据,接下来检索条件是什么?我们这有个search request,这里边呢有一个source source里边呢,要通过传入一个search source build这一块呢,就是我们的检索条件,好,我们在这儿指定我们索引,我们在哪里检索,然后呢,同样在这指定我们的DSL,也就是我们的检索条件,而这个检索条件呢,全部要传入一个我们叫search source builder。把它要传入进来,那这个build该怎么做,我们来看一下,我们参照文档里边,我们需要new一个search source build,那我们就来new一个new一个search source build,好我们把这个build呢来创建出来,最终呢,我们就将它放到里边。
03:14
指定检索条件,我先不写任何检索条件,我们只是用了一个空的build,那如果第一步做完了,创建检索请求做完了,那加第二步。就应该是来执行咱们这个检索,那执行检索呢,同样使用client来进行执行,包括我们来参照官方文档,在下边当们构建好这些search source builder,包括search source builder该怎么用,这块都有各种事例,我们一会来看,那构建完了以后呢,我们就可以去来执行,那执行操作我们就要参照我们这一块的文档,这用异步执行这一块有一个同步的执行,调用client的search方法将我们这个检索请求传进来,以及我们request的option传进来,那我们执执行成功以后,就会返回一个search response执行的结果,好,那我们就来使用client点一个search,要检索就调用search,将search request传进来,同样的将我们这个request的这个option我们传进来,CC,我们放到这好。
04:20
这个检索执行完了以后走,我们就会拿到一个响应,叫such response,那第三步我们拿到响应以后呢,比如我们以前肯定将将响应里边我们命中的所有记录我们拿出来,包括呢,我们还想要将聚合的这些信息,我们就要检索拿出来,我们进行分析,所有呢,我们第三步就应该是分析结果,所有的结果呢,全部在search response里边封装着,而它里边有什么,我们来参照文档往下翻,这除了异步执行外,下边呢还写了我们这个such response,我们这个检索结果,这检索结果里边各种参数都代表什么意思,比如从response里边可以拿到status,我们的整个响应状态码,以及花费了多长时间,包括我们这次检索请求是否超时等等,包括一些封片信息,成功信息,这一块都是拿到封片信息,还有这一块reri search case,我们能查询检索命中的。
05:20
记录,我们可以调用search response.get hit,拿到所有命中的记录,命中的记录里边呢,还可以拿到总记录数,通过这个点Y6方法得到真正的总记录数,包括它的相关性得分,最大得分,以及我们真的要获取所有的记记录还是get hit里边来进行挨个遍历,遍历的每一个能有什么参数在这里边都解析的很清楚,它有index,当前索引,还有当前的ID,还有它的score来真正的值呢,我们通过这个hit对象还能调用一个get source and string等等一大堆,所以呢,所有东西全部参照文档,我们都可以来做。当然了,我们先来将我们的请求构造完。
06:03
那接下来转入我们这里来构造我们的检索条件,1.1构造检索条件,那检索条件按照我们这一块的内容,K8的里边,我们想要发送一个检索请求,除了检索,我们还要做一些聚合。那这怎么做呢?我们来看官方文档control home,回到最先我们来看它这一块,我们要做一个查询,这有一个using search source build,使用这个,使用这个呢,如果我们想要做查询,那search source build里边有一个query,其实这个search source build是给我们构建查询语句的,那我们整个DSL上来会有一个查询,查询里边有man,所以呢,我们这一块search source build里边它的更操作,我们的DSL跟操作有哪些,它这就应该有哪些,那么上来呢,就有一个query,包括呢,我们给大家以前体会过我们的分页,比如还有from,从哪儿我们来写一个from。
07:06
从几开始到几节数来写一个size到几节数,只要这些跟操作我们能写的在search source build里都有,比如这有查询条件search source build里边还有我们的封页条件from,当然还有我们的这个size,来把这个build拿过来加上size。包括呢我们还要聚合,聚合呢我们写了一个a GS aggggss,那么这一块呢,也会有第二我们来看一下有一个agggggation,所以呢我们所有的更操作都可以在这来找到,那我们现在呢就来先用第一个更操作query,那现在来要构造一个检索条件好点一个quary,然后呢,里边要传一个quary build,就是它来我们来看看上边里边要传一个quary build,那这个re build怎么用,参照文档corre builder呢,文档里边有一个非常快的方式,它使用了一个叫corre builders,所有带S的,那就是我们前边这个东西的工具类,所以呢它利用这个工具类来进行一次查询,好我们就来做一个这个操作,那现在呢,我们就来写一个corry builders,我们拿到这个builders,那我们现在想要怎么来查看一下我们的检索条件?
08:28
我们在这呢是一个match,这是一个非常简单的查询,那么就来到这,看它里边呢有没有对应的方法,我们写了一个match,诶,你发现呢,这除了有match还有match哦,那假设来到我们以前有这些match的查询。上边我们按照地址检索出来,再按照年龄分布求出平均人年龄以及平均薪资,那好,我们假设来构造这个,这里边呢有一个真正的查询条件,不是查所有他要查address,里边匹配带了密的,我们会做一个全文检索,所以呢,接下来这个cor rebu里边想要做什么,你就来写上,有一个叫match query,它里边呢有name和object name,那就是我们对照着我们K边的里边的DSL。
09:15
我们检索,我们相当于要检索address,所以呢,我们这一块的name我们来写address,而它的值是什么,要检索什么的值,我们来写一个面,把它传到这好。我们发现呢,通过这个我们就构造出了query条件,包括这个query条件构造的对不对呢,我们在这有执行,这有结果行了,结果呢,我们先来打印到这,我拿到结果来打印他的吐斯瑞。那在执行之前,由于source build里边,这里全部封装的是我们的检索条件,所以呢。我把这个封装的这个条件我也打印过来,这也是非常简单的,那我们再来检索之前我们这个条件query构造好了,我们直接source build,点一个to string,我们把它打印过来,看一下有没有我们这些检索条件,好,我们先来执行走。
10:12
我们发现呢,这一块成功成功呢,前面那后边这个打应是我们的这个响应,我们发现这个响应TOOK3TIMEOUT,包括shas,还有hits,这个其实就是我们K班呢,里边我们看到的这个响应,相应的杰森也有,包括我们的查,之前来查询的这一块我们也打印过来了,那这一块呢,有一个match address query用它,那我们的检索条件也对,只不过呢,它还带了我们检索条件的其他属性的一些默认设置值,那这些属性都代表什么意思,比如boost等等,全部呢,我们可以来参照官方文档来看就行了,那后来用到的时候呢,再来说所有的这些,就像我们以前给大家说的一样,你直接来到官方文档这儿进行检索,那我们就可以来查到这些东西呢,都是什么样的?
11:02
这块呢还没有打印出来,那我们来看一下,把它转化为大写,这里呢就检索出来了,比如boost这个属性是来做什么的,点开。这块呢就解释了我们boost的用法,比如他说我们这个boost是来关联我们这些相关性得分的,我们有一个title条件,如果boost是二,那针对这个条件的检索,它在相关性得分里边占的比例就更大,而默认呢,所有的boost说都是1.0等等等等,那其他呢都可以通过这种方式来查询,我们就不说了,但整个呢,这个语句是构造的没问题的,包括查完以后我们打印的这个响应结果图词证来看一下,它里边呢肯定有我们总记录数,而且呢也有最大得分,所有查到的所有的总记录数,我们来看一下TOTAL1,说明呢,查到了一个,但这一块不是这一个,这个S这是封片信息,我们这个呢,应该在这看hit命中的所有记录里边total value呢是四,那查到了四个。
12:01
更多的信息该怎么提取,我们后来再说,那还是构造我们的条件,这是第一个条件,我们的query条件构造好了,那接下来呢,我们还要构造我们的聚合条件,来看一下这个聚合该怎么构造,来到我们这儿,我们的Kan里边,那之前的检索我们有一个聚合,这个聚合最大的特点呢,是里边有三个聚合信息,所以呢,我们就可以在这来使用source build,点一个聚合就agree,在这呢我们就做了一个聚合,但这个聚合该怎么用,我们点进来,我发现呢,它里边还要传一个聚合的build,一般呢,这块要传的什么builder都有,它对应的这些工具类,所以我们我们来看一下有没有aggression builders这个工具类,好,我们先把这个build呢传过来,我再打一个S,我们发现呢,确实有这个工具类,工具类呢能帮我们来进行聚合,比如有求平均值的,包括日期。
13:02
方图的G总数的等等,各种聚合呢,在这都有,而我们现在要做的第一个聚合来看我们的K,我们是一个HHGG相当于我们来求出我们查询到的这些记录里边,我们所有的年龄分布有几个,比如呢,我们HHGG查到了三个年龄分布,而我们年龄分布呢,其实用的是一个terms,所以接下来我们的aggression builds,我们要构建的第一个操作是点一个这呢发现有一个叫terms,而terms里边呢,先传一个name,这个name是什么?那就是我们聚合的时候这一块我们为这一次聚合起了一个名字叫HHGG,所以呢,我们用它来进行聚合,包括呢,我们到底是来聚合分析哪个属性有几种可能,那么这一块呢,还要指定属性,怎么指定呢?这都可以参照文档里边都有对应的事例,比如我们来往下翻来找,是不是有我们这这些term操作,下边呢,这有这些过滤。包括我们来看一。
14:02
下有没有聚合,诶这有一个聚合,聚合里边呢,这有一个示例就是term姆斯,这是特姆斯的名字,按照哪个属性进行term姆斯,然后点F就行了,好,所以呢,我们在这继续呢,面试调用点费的,我们是要看哪个属性的所有值来参照我们的DSL,我们现在要看H的值。包括呢,我们后边还有一个size,我们要取出十个,有可能有很多记录,像这些的定义,那后边呢,肯定都能继续链式调用,诶我发现这确实有一个size,你再来写一个十。那这个terms的聚合条件走,我们在这呢,我们发现就OK了,那么这个呢,就叫h agg,那我们的第一个聚合,那就是这个h aggg,因为我们有三种不同的聚合,所以呢我们就应该创建更多的聚合条件,比如还有avg balance avg,那么就来再多来写一个吧,就叫balance avg,它是一个求平均值的,所以呢,我们第一个条件就过去了,这是按照年龄聚合,按照年龄的值分布进行聚合,那么这个呢,做完了,接下来我们还要求出所有的平均薪资。
15:15
计算。平均薪资,那么这个平均薪资呢,我们又是一种新的聚合,只要有聚合们就给search source build里边聚合,把我们这个聚合呢放在这儿,因为我们都是同级的,这有一个聚合,接下来还有一个聚合。那这个聚合呢,是求平均值,所以呢,我们还是用这个build点一个里边有一个叫avg求平均值的聚合,这个平均值的聚合呢,同样取一个名字,我们来看这个聚合的名字,它叫balance avg,我们把它复制过来,好聚合的名字就是它,但是呢,我们求谁的平均值,我们有一个属性是balance,所以呢,我们同样得在这来指定是来求这个属性的平均值,那么至此呢,又得到了一个薪资的这个聚合,我们把叉拿过来,我们在这呢放过来,好,那两个聚合条件呢,又好了下来,我们整个条件都构造好了,我们同样打印一下它的这个source,这就是我们的检索条件,检索条件我们来测试一下,看打印的这个检索条件对不对,我们来在这儿来运行走。
16:28
那这一块呢,运行成功,我们看我们的检索条件match是这个操作,我直接呢,把这个检索条件我复制出来,我们来把它复制出来,我们放到一个杰森的格式化工具里边,来看一下杰森格式化。我们在这来看一下我们的这个检索条件,跟我们自己写的DSL是不是一样的,Query里边其他的这些操作,这都是默认值的,我们就可以给它干掉。那么来看我们的aggregations里边进行聚合,聚合里边呢,一个聚合,两个聚合,确实有,就是我们对应的conslo里边这两个聚合好两个聚合。
17:10
然后呢,我们来看它聚合的值,第一个按照年龄的值分布进行聚合,用term看它size呢,都在这,包括其他默认的信息,比如按照排序等等来做的,那这些默认信息我们不写,这都是默认的啊。删掉以后呢,其实跟我们这一块控制台写的是一模一样的,包括我们的balance,我们求平均值,哎,那这一块呢,也都是一样的。拿着我们的这个DSL,保证在我们的这块运行肯定是没问题的,比如我们把它放在这块来get。我们来检索银行下的这些数据杠,一个search,我们来把我们章啊构建的这个DSL,我们来在这儿测试一下,走没有报任何的语法错误,包括也是查到四个结果,所有聚合出来的结果信息值,这是命中的记录数,这是它的。
18:06
每一个我们这每一个封片的工作,这是命中的记录数,还有我们最终聚合的结果,这都有,所以呢,我们这个条件那就构造好了,而且呢,我们这执行了,也最终得到结果了,我把这个结果也复制出来,我们在这儿呢给大家看一下。Ctrl a复制格式化校验,那这个结果呢,我们来看跟对应的这一块返回的结果是不是一模一样的,首先呢,根元素有took timeout shas hits aggregations,好,我们在这看更元素took timeout shas hits aggregation,好,没问题,那我们Java返回的这一块结果也没问题,那么主要来看命中的记录,总共四个,最大得分5.4,什么025,那么这一块也是一样,命中的记录最大得分5.4025,所有命中的记录我们都在这,第一个account number,什么970之类的,那么这一块呢,也都有所有命中的记记录第一个970,相当于呢,我们就查出来结果了。
19:06
但是呢,这个结果,比如举一个例子,我们最终要把检索出来的这些值,这个呢肯定对应我们Java比应有一个对象,我们要将它所有检索到的结果封装成这个扎va并应的集合,那我们如何获取到这个结果呢?所以我们接下来就要在这进行结果分析,我们目前只是把所有的结果打成一个这个节省字符串,当大家完全可以用任何的节省工具将我们这个字符串解析成我们直接映射好的一个对象,比如我把它解析成map以后呢,所有的东西都从map里边找,我们在这来解析对象,来封装成一个map类型的嘎U,好点,一个map。走,那最终呢,可以把它封装成一个map,想要什么数据都可以从map中获取,我想要总记录数,那就要从map中先来获取我们的hits信息,所有命中的记录,这个hits里边呢,还有hits,它里边呢又是一个杰森,而且呢是一个数组,数组里边呢,我们一个一个拿,要真正拿到数据还在杠source里边要获取,但这么一层一层获取,拿map来操作也很麻烦,中间要各种类型转换,而官方呢也提供了这些操作,我们来看我们的search API里边,我们这些查询检索条件在这都做好了以后呢,在下边我们在这异步执行好,执行完了以后我们返回的结果,返回的结果我们可以得到很多基本信息,首先得到我们结果的这些状态信息,那这哎,有还有我们得到我们这些分片信息,这些我们都不用,那现在呢,最想要用的就是我们所有命中的这些记录,以及我们的聚合的这些值,那我们呢,就可以在这调用such response get hit能拿到。
20:50
我们命中的记录,当然我们这个命中的记录返回的是这个最大的hits,那里边的还有一个小hits,这个所有的命中记录。
21:01
把它这些呢,我们比如都来缩一下,这里面的小记录呢,也是非常多的。好,我们就来获取一下啊,这个我就来注掉你在这分析结果3.1分析第一个结果,获取所有获取所有查到的数据,怎么获取呢?我们通过search response里边,它有一个叫get hits,获取到所有命中的记录,好,我们来拿到它,它呢给我们返回一个search hit,而这个hit呢,对应的就是我们最大的这个hits,我们要获取它里边的命中的记录,按照文档我们从最大的这个hits里边可以得到命中了多少条记录,总记录数以及最大得分都能达拿拿到,但我们想要用真正的数据,我们还要从hits里边继续get,所以我们来继续,这是拿到外边的最大的hits,我们从这个hits里边继续来get hits获取我们命中的记录,我们就叫search hits,这就是我们真正命中的所有记录,而我们想要看这些记录,我们就可以对它进行遍历。比如,我们来。
22:07
点一个for each,我们就用增强for,这是我们每一条命中的记录,那这就是我们里边的这个hit hit里边我们有一条条命中的记录,而这个记录里边呢,也有一些基本的原信息,它属于哪个索引,包括哪个类型,以及哪个ID,最大分是多少,以及它真正的内容是什么,所以呢,我们就在这儿全部都能获取到。也就是这一块有什么,我们就能获取到什么,这一块有这几个,我们来看一下命中的每一条记录里边,那我们来试着获取一下,点一个get,有没有index呢?诶,我们发现有,包括呢,我们hit,我们再来获取一下get。有没有type呢?我们发现来输入一下这也有,虽然这是一个过时的,再来hit,第2GET有没有ID呢?好,我们这也有,而我们最终想要用这个S,所以我们就来拿到我们最终的数据,这些原信息我们就放到这。
23:06
那么最终的数据hit点二,我们有一个get source这一块呢,Source有很多种办法,第一个是get source and map,我把我们返回的数据变成一个map,因为返回的这是一个接对象,对象呢就是KVKV值完全可以变成map map,第二种呢,是将我们返回的数据我们可以看一下。Get source,它还可以变成string,这个string呢,那肯定就是我们杰省字符串了,而且呢,我们最终都是用这个,但是呢,这个string啊,最终我们肯定要映射成我们一个JA比对象,也就说呢,我们真正的这个数据肯定在我们Java里边有对应的我们的这个数据对象to,那么就可以利用它来生成一个我们这个扎尔实体类,好,我们把这个呢数据来放到这。我们先来写一个大括号,把它们放里边,报名呢,我们就来写com.at硅谷点鼓励ma.search我们把这一块呢,我们就叫account,我们的账户类型,那我们的整个jab,那就长这样来生成jab。
24:15
那么将这个B呢,我们直接来复制过来。比如那在我们测试类里边,我来写一个这个account类型的加B,好,我来写一个class,那就叫account,我把这一块呢全部复制来好。CRC。走。那么这个账号的信息呢?在我们这就有了,接下来我们要想要封装,我们就可以把这个杰森字符串拿到我们转为我们指定的这个account对象。怎么转呢?利用杰森工具fast杰森里边有一个叫pass object转对象,把我们这个string转成什么类型的对象,我们来指定一下转成account这个类型的对象。好,我们把这个对象进行返回,那最终呢,我们可以在控制台打印一下,那么当前检索到的这个账号信息,比如呢,我们就叫account,好,它的真正的值,我们把这个对象给它加到这account来,它的这个图论方法呢,我们也来给它加上,直接把这些属性呢,我们都删掉,使用long bank at data注解。
25:22
好,我们把这个删掉,然后呢,我们在这来标上注解enter data,包括呢,我们想要用to string,我们还要标一个注解叫to string,让它自动的使用这些属性给我们生成图,String方法这块都标完了以后呢,我们在这儿进行转换,转换出来的对象我们来进行打印,那这块我们就拿到了所有的这些课堂数据来测试一下。运行。我发现这个search data这它报告没有我们这个静态的内部类啊,我们这个要创建构造,那我们就来写上我们这个静态的内部类,我们来重新运行一下。
26:01
好,这一块呢,检索成功,我们打印的所有数据,Account账户信息,第一个970136345472,所有的这些数据呢,我们全部都封装好了,这就是我们这个对象里面的数据,好那这一块呢就没问题了。我们也能得到检索到的结果了,接下来我们还想要拿到它的这些分析数据,3.2,那们再来获取这次检索到的分析信息,聚合出来的这些分析数据,我们想要拿到他的这些平均薪资等等等等,因为我们呢做了一个聚合,查到年龄的值分布和平均薪资,那么想要获取这个怎么获取呢?还是通过这个response里边,那么看上来呢,直接会有一个叫get aggregation,我们拿到所有的聚合信息,那这个聚合信息里边呢,就有我们要用的聚合,比如我们来获取第一个聚合,它里边呢有一个方法叫按list,将我们所有的聚合信息都做成一个list,好,我们就把它转成一个list,因为我们要聚合的东西很多,我们做了两个聚合,操作好,我把它转成list,然后呢,我来进行遍历,For each,我们直接用增强for,每一个遍历出来的信息就是这个聚合对象ggreg。而这个聚合对象。
27:16
那里边有什么来复制过来,我们看一下聚合对象里边的方法,首先有一个name,那这个name呢,相当于就是我们当前我们聚合出来的这个数据,那现在呢,做了一个这个HHGG聚合,那相当于就是它的名字,那么就可以来先打印一下这个name c out,好,我们就来写上out。那么就叫当前聚合,当前聚合,当前聚合的名字是什么,来打印一下,而聚合的数据是什么?我们可以使用aggregation,它里边的带到我们这个方法,这呢只剩这些Meta data以及type以及它的这个class类型了,还像拿不到我们这些数据,所以呢,我们这一块呢,就可以来参照官方的API文档,怎么获取这些聚合数据呢?我们来展开,我们看到下边,诶下边呢有一个查询高亮,还有查询聚合,跟我们一样,还第一步先拿到所有的聚合信息,接下来呢,他没有把它转成list打印,他直接通过这个聚合点get获取到各种聚合,那get的这一块呢,就是我们的名字,所以我们要做的就是我先来把这一块呢去掉,我们也从这个aggregations里边获取我们的聚合信息,我们来做一个get get什么呢?我们第一个聚合是我们的这个叫。
28:40
G相当于我们的年龄的值分布。包括我们这个条件里边,哎,就是这样,我们这个条件呢,我们要看杰森转换后的这个东西,万一跟我们以前不一样,好,His在aggregations里边,它里边呢,有一第一个聚合,聚合名字叫edge aggg,而前面呢是它的这个聚合类型叫terms I terms,包括呢,下边balance avg,这个也叫avg,那么在这获取呢,就不用写前边的这个聚合类型了,这是他们为了方便自己来识别加的,我们就来只写我们后边的叫HHGG。
29:16
好,我们来获取第一个句合GG,我们返回一个aggregation,但这个aggregation是什么?由于我们是term聚合,所以我们呢,我们直接可以放心的把它转成我们这个term,就像我们的文档里边一样,我们呢把它转成term,导入我们ES的742的这个好,然后呢,这是我们的h agg拿到以后呢,我们就可以获取get buckets buckets是什么?我们来看一下,在这一块的聚合里边,它里边呢有一个bucket buckets里边是所有的年龄值,K就是它的值,所以我们可以来变历,直接点一个for each,我们用增强for这个bucket里边我们来点一个get它的K啊,我们用bucket,好,bucket.get这有一个K。
30:06
能把K呢当成number,也能把K呢当成我们这个string,好,我们就当成string来返回我们这个K来返回,我们就来打印一下C4OUT,我们有多少种年龄,我们就打印一个年龄,点一个k and string,这相当于我们获取到了h agg的值,那同样的我们要求平均值除了I级agg,还有一个balance agg,那我们就继续获取,在总的aggregation里边点一个get,我们现在呢叫balance agg,同样来返回我们的这个聚合,但这个聚合呢,由于我们是平均值,平均值呢就有对应的它的这个平均值的这个聚合叫avg,好把它呢复制过来。我们就来导入这个avg,那到底有多少种这种聚合类型,其实呢非常简单,因为我们在这get的时候,我们返回的是一个aggregation,我们点进来它呢是一个接口CTRLH,我们打开它的整个继承类,这呢就相当于包含了这么多种聚合,比如我们展开我们的内部聚合里边,比如就由我们的term等等各种东西,所以呢,我们要返回什么,最终呢,就是看到这一块的这些返回类型就行了,而我们现在呢,这先返回了一个avg,那我们现在呢,就可以来获取我们这个avg的值,好,那么现在到底平均薪资是多少,我们也打印一下平均薪资,平均薪资。
31:31
我们来获取一下这个balance avg一点get value,我们把它的值直接拿来,那我们现在整体就全部做完了,前面呢,我们构建出了检索条件,中间呢我们执行了检索,后边呢,我们把检索拿到的结果也做了有用信息的提取分析,我们现在来执行看一下效果。那我们看到我们这一块的整个效果呢,就出来了,平均薪资我们也拿到了,包括年龄分布我们也拿到了,而且呢,每一个年龄分布的人有几个我们也是可以拿到的,它呢有几个人,加上我们bucket里边呢,又有一个叫dock count,就是我们这个文档有几个,那就是有几个人参照我们最终的这一块返回结果,那这一块呢,Doc count是二三十八岁有两个,这次呢,我们整个检索,特别是这个复杂的查询检索,我们也构造完了,大家第一次听呢,肯定内容非常多,感觉自己也做不来,实际上呢,按照这个步骤,大家自己去来尝试一遍,对它的使用呢,就非常清晰了,它整个封装层次结构也是非常明确的,如果有不会的,完全参照我们的官方文档里边呢,都有说,包括我们每一步的解析,我们都是照着官方文档一步一步做下来的,那任何文档的这些操作,每一个官方文档呢,最终都会像这样一样,那么在无论是调用任何的API,我们不管是。
32:53
检索还是保存数据,他们的文档呢,都告诉了请求怎么构造结果该怎么解析,每一个呢都有,大家都可以来看这些。
33:03
包括牵扯到的一些属性,如果不知道是怎么用的,我们就可以来直接进行检索,参照文档使用就行了,那我们整个例子呢,我们就讲这两个,一个是给ES里边存储数据,第二个呢,我们构建一个复杂检索,那么项目里边呢,就要用到我们这两个操作,大家在下边一定要好好练习。
我来说两句