00:01
好,我们继续往后说啊呃,然后最后一张的是我们要讲一下这个ES的。Java客户端啊。就是我们要通过写代码的方式,然后来操作这个ES了啊,行,先来做一个介绍啊呃,对于这个ES的这个客户端来讲啊,这个目前的话,我们市面上有两类的客户端。啊,就有两种类型啊呃,第一种是以这个就是transport啊,这个为代表的这个ES,它这个原生的客户端。它是不能够什么执行这个原生的这个DSL语句的啊,必须什么使用他的这个Java这个API的方法。啊,然后呢,另外一种是以这个就是rest API为主的,这个叫。那这个比较典型的是这个啊呃,这个大家看一下就得了,因为我们也没有也没有去学过是吧,比较典型的这个just啊呃,这一种客户端这个好处是什么呢?啊,好处就是我们可以什么直接把这个DSL语句。
01:00
拼成一个字符串,然后呢,直接什么传给这个服务器。他就能帮我们去执行了啊,就说白了,如果你要使用这个just的话呢,呃,我们将来比如说我想什么通过代码去执行了,对吧,那么你只需要把你。写好了这个DSL语句,然后呢,给他这个封装成一个Java中的一个字符串,然后你这个封封装成这个Java字符串以后呢,你就什么直接呃传给这个客户端,然后他就能为什么帮助你去执行了。就说白了啊,其实你不需要写什么太多的代码。能理解吧,啊,这是以这个就是rest API为主的一个。啊,然后。这两种方式的话,这个各有优势啊,各有优势啊,但是这个最近啊,这个ES这个官方啊,然后呢,宣布说这个在这个7.0以后呢,计划这个废除这个transport啊,就这种东西我们就不用了。对吧,他计划会除掉了啊,就不用了,然后呢,呃,主要是以这个RA为主。啊,明白吧,主要以这个rest为主,那这个呃,Rest club的话就是刚刚我们介绍过一个叫做just啊,这个其实挺好用的啊,就是它这个写起来会更加的省事一点,你写一个DSL,然后呢,直接什么传给他去执行就行了。
02:08
明白吧,啊,但是这个他这个ES官方呢,又主推了另外一个。啊,他并没有去推这个啊,因为这个呃,Rest这个API的话呢,我们除了这个just之外呢,还有别的啊,像这个什么还level。嗯,还有什么这个elastic search,什么rest template等等一些有很多哈,然后他这个官方是这么说的。说这个我们计划呢,在这个7.0之后呢,把这个transpl给它废除掉,然后呢,将来这个8.0里面就已经没有它了,把它移移除掉了,那么呢,呃,作为这个替代啊,你可以什么使用这个叫什么Java high level。对吧,他说他建议我们使用这种方式,那这个方式的话,对应的我们这个客户端的就是这个high level rest。就说白了,他也没有再去推这个什么just。明白吧,好,那也就意味着我们,呃,今天给大家去讲这个ES的这个客户端,我们主要讲的还是这一种。
03:00
就是照着这个官方的去走啊,跟着这个官方的这个脚步去走,人家人家主推这个,那我们就使用这个。听到了吧,啊,人家主说这个我们就使用这个啊OK。行,呃,然后他说这个,呃。呃,他说这个我们啊,他会执行什么,这对这种客户端的一个介绍啊,他执行什么,执行这个HTTP的一个什么request。对吧,它会是就是你将来什么通过这个htb request,就是还是你的这个HTP请求,然后去执行。明白了吧,啊去执行的啊,然后下面还是对他一个介绍啊,说这个呃,这种客户端吧,嗯,就目前来讲呢,已经支持了这个大多数的这个通用操作。就是你这个ES中的一些什么这个通操作啊,它这个大多数的都已经支持了,呃,但是呢,还会有一些这个。嗯,功能呢,我们需要怎么去做添加啊,就说白了,它还没有什么加的,这个很丰富啊,然后呢,你可以什么帮助我们去提供一些什么呀,就是。你觉得哪些东西呢?哎,还要用,但是呢,我们没有提供的。
04:00
对吧,那你可以怎么帮助我们,去告诉我们一下。理解了吧,告诉我们一下,然后将来我们就会把他们加进去啊,就说白了,这种客户当然一直还在什么这个优化中啊,或者什么还在这个开发中啊,但其实现在我们对他的这个使用的话呢,他的这个已经拥有的功能是足够我们用的。明白了吧,就是一些可能这个比较偏门的啊,一些这个功能它还没有这个提供出来啊,但这个都不影响我们了啊,不影响我们。好吧,行,这个大家知道一下啊,OK,那我们把这个做一个介绍啊,然后现在我明确一下,我们就是用这个high level啊rest client就使用这一种,那么这一种的话呢,呃,其实说实话没有这个just的好用。啊,但是呢,人家是这个完全面向对象去使用的啊,就基于面向对象的方式来操作的,你这一种的话呢,他会把你的这个就是DSL的可以给他什么,给他这个混合进去啊,你这个看起来就不是很直观。明白吧,啊,就是这一种,我们可能写的代码会更多一点,写的代码会更多一点,但是呢,它更加的直观,这一种的话就是代码可能会少一点,但是呢,没有那么直观。OK吧,它们两个有区别的啊。
05:01
行呃,那介绍完成以后啊,接下来我们就先把这个环境给他这个搭建起来啊,那就回到我们这个开发工具中啊。呃,过来以后呢,我们就在这个工程下面吧,我们再去用上一个。有一个猫脚哈。就妹妹的Mo,然后下一步啊,我们就取个名字吧,嗯。就叫ES吧,好吧,ES demos DEMO吧。可以吧,啊ES啊,来这个直接下一步啊。呃,ES杠。好,完成。好了。呃,然后有了这个猫掉以后啊,然后接下来干什么事情呢,我们要加依赖啊。这个依赖的话,在这个文档中也给了啊,我们把它复制过来。好拿过来啊,拿过来放到这个地方啊,好加进去。
06:05
OK,来看一下我们加了什么东西啊呃,首先啊,这个这是你这个。ES的什么这个客户端对吧,然后呢。呃呃,这是那个什么ES啊,这是那个ES,然后这是你的S的客户端啊,就是用的是这个rest client啊,然后呢,还加了这个就是我们的。呃,叫http client啊,因为我们这个将来你跟ES交互呢,其实是通过什么HTTB的这个协议来去交互的啊,所以说我们需要什么通过这个htb client啊,然后通过这个代码的方式呢,去发送这个HTP协议啊,这个是它内部去使用的啊,我们只要把它加进来就可以了啊。好,然后呢,我们又加了一个这个就是fast摘,因为我们将来往ES中放数据,还是以这个摘的格式放数据的啊,那我们就需要自己把我们这个数据呢,给它转换成一个摘胜格式的,然后呢再交给他,对吧,所以加了个这个这个包啊。OK,呃,依赖加进来以后呢,接下来我们就回到这个里面啊,过来以后呢,我们去,呃,我们写Java代码啊,嗯,我想想啊,写Java代码还是写这个格拉代码呀。
07:08
嗯,都行吧。写Java的吧,好吧,写Java的,嗯,我看看啊,我文档中写的啥呀?呃,文档中写的是盖的是吧。这个其实都可以啊,写Java和这个写SKY都可以啊,那我们就按照文档中的来吧,我们写成这个SC代码得了啊,反正将来我们,呃,将来我们在这个实施项目中用的话,我们也是写的这个SKY的代码。对吧,那我就什么同意都使用这个SKY得了啊行,那我就这样吧,嗯,我再给他去加上一个。目录啊,叫这个SKY。OK吧,标记一下啊。行,嗯,那我看看这个有没有加那个啥啊。把这个SKY插件加一下啊,要不你不加你不能用啊。OK,然后呢,我们再来去用上一个。
08:01
又一个包啊。嗯,用一个package就叫ES吧,可以吧,就叫ES的就叫ES了啊。好,然后呢,我们再用上一个类啊,我们就叫ESDEMO吧,那些吧,做一个测试就完事了啊ES test。啊。来这个就是我们干嘛呀,就是这个测啊,就是ES客户端啊。好,Yes,客户端啊行。好呃,那这个现在我们是写的这个SC的代码啊,这个大家下去以后呢,你可以尝试着去把它换成这个Java代码去试试啊,这个应该都是没啥难度的吧。你把这个skill代码换成这个Java代码。对吧,大家可以试试一下啊,OK,行吧,那我们就来这个接着往后写了啊,这个是我们刚刚把这个环境打起来,打起来以后呢,我们先把它的这个客户端对象给它创建出来啊,这个客户端对象的话呢,首先你需要先把这个定义出来啊。
09:07
能理解吧,我们就都写到这里面了啊,那我们先去这个声明啊。这是我们的这个客户端对象啊,客户端对象,呃,这个对象我们叫什么呢?它叫做。刚刚是看到叫什么叫rest啊呃。High level,诶,就那么小写的呀。还。嗯。嗯,那我先写个好吧,先写个啊。对吧,要不他这个不提示我啊,你好来打个包啊,行,这就是我们的这个客户端的类型啊,同学们就叫什么这个rest还level c啊,那我先给他个空吧,就是我先把这个客户端的作为一个声明啊,那声明好以后的话,下面我们就说一下这个东西怎么创建啊呃,这个创建的话,我写个方法吧,好吧,写个方法啊,就是创建客户的对象啊OK,呃,这个怎么创建的,那我就写个DEF,就叫correct吧,好吧。
10:23
那我将来就直接给他赋值了啊,我调一下这个C。这样不就OK了吗?对吧,那这个最后给给大家返回的是一个。还来吧啊。OK吧,啊,那这个怎么写啊,同学们,这个rest high client啊,我们直接去new就可以了啊,又上一个这个rest high level client,然后呢,把它这个接收回来,嗯。好,然后最后把它返回回去对吧,正常操作这样操作就可以了啊,但是呢,现在很明显还差点东西啊,差什么东西呢。你说你这个你是一个客户端,那你客户端的话,你要连谁呀。对吧,你连谁啊,你不得告诉我这个ES的地址在哪里吗?
11:02
是不是啊,所以说你在new的时候啊,你就要想到这个事,想到这个事以后你就想想啊,它这里面要么是构造器,要么是方法,对吧,肯定需要你去指定一些东西的啊,那我们看这个隔噪器吧,这个隔噪器里面,它说我们需要有一个叫rest client build。能看到吧,就是你的rest client,就是你的客户端的一个什么build的对象啊,需要有这么一个对象。OK吧,那我们为什么需要给他传上这么一个对象,然后呢,通过这个对象呢,给他去指定一下我们,呃,需要指定的东西啊,来,那我们需要扭上一个这个risk的build啊,呃,就是你看到你要啥,你就尝试去扭一下啊,Rest client build。啊。行,看一下能不能拗啊,这是我的client build啊,OK,呃,New的话我看看啊,这个能不能扭呢。啊也能new是不是也能拗啊,然后呢,这里面需要给什么,需要给这个node来看,No对吧,需要给这个node啊然后呢,这个node什么意思,Node应该就是你点过来看看啊,这个node里面应该就是我们的放了什么,放的这个htb host,这是啥东西啊,这应该就是需要指定你的这个主机名字对吧,你的什么地址。
12:13
就说白了,要指定这个ES的位置。是不是啊,然后呢,当然还有呃需要你指定别的,那你什么都要都需要去指定对吧?这种方式应该是可以的啊呃,但其实的话呢,大家注意哈,这个一般这个标的对象哈,一般这个标志象呢,是很少需要我们自己去扭的啊,一般是很少需要我们自己去扭的,它都会有一个什么呃方法来帮助你去创建它的。OK吧,来,那你看一下啊,我们就不用这么去写啊,这个我只是告诉你,你要什么东西,你可以尝试去拗,对吧?啊,但其实我们会有更方便的方式啊,我就不用它了啊,怎么写呢?这里面提供了一个叫做rest client,呃,Rest client啊,我得倒个包啊。好就它啊啊打个包啊,然后它里面的话有个方法叫做这个build,看到没有这个build就会给你返回一个什么risk and build,就说白了就不需不需要你自己去扭了。
13:04
对吧,那这里面的话,你看同样也是传漏的啊,或者说什么直接传一个http house就可以了,那这个应该会更直观一点啊,我们就调用这个方法吧,你看啊这个直接什么这样标志一下。好,给你返回一个啊,这还得传完啊,没传完不行啊行,它里面要求我们传一个http host,那我们就什么给他准备一个htp host啊,来用上一个host,行,那这里面需要传什么东西呢?你看一下啊,它里面就是你的主机的名字和你的端口号,就是你要连你的ES,那你得告诉我主机名在哪。端口号在哪?对吧,这个我就写一个就得了哈,那我就写上一个,比如说哈杜102,然后端口号是9200。对吧,然后最后呢,这个返回呢,就是我们的rest build,好,那你再把这个rest build,然后呢,搁到它里面,诶你看这就可以了。对吧,啊,就是这样就可以什么把这个客户的对象给他这个创建出来了啊行,那这个创建出来以后呢,接下来我们就可以什么再去测试的时候,就可以什么去使用它了啊OK,然后再一个就是嗯这样啊。
14:10
给大家去说一下吧,这个客户端对象啊,用完以后一定要关啊,你比如说啊,我先给你打印一下,对吧,我先给你打一下啊,你看我这个代码的执行啊,我在执行的时候。好,稍等一下啊。嗯。好,你看一下啊,它给你打出来了,是不是这是你的客户的对象,然后你就发现啊,我这个代码其实它是没有停掉的。然后了吗?这个代码是一直什么,一直在运行的。啊,这个是为什么呢?啊,就是因为你的这个客户端对象创建出来以后呢,如果说你不关的情况下,那我这个程序它是不会停的。理解吧,这个程序是不会停的啊,所以说呢,我们就需要什么正常程程对它做一个关闭啊,怎么关闭呢?那我就再来写个方法吧,这个是关闭啊。
15:09
好,写到这,这是那个什么关闭啊,客户的对象呃,怎么关呀,那就直接来个什么close得了啊,然后这里面我们就判断一下啊,如果说你的这个E,呃,ES就叫兰是吧。不等于空啊好,那我就什么这个直接CLa.close一下就把它关掉对吧?行,那这个方法有了以后呢,我们正常用完以后呢,你一定要什么去给它关一下啊,就是直接什么close一下对吧,这样的话你看一下啊,我们。代码这个执行完成以后呢,它遇到这个close以后,就是你做了这个close操作以后呢,你的程序才会正常的停掉哈。好,你看一下这个程序,我们正常退出了吧。对吧,刚才是不退出的啊,说这个呃,用完以后一定要记得关啊,一定要记得关好了,行,那这就是我们这个环境的一个准备啊,那现在我们能够正常的拿到你的这个客户端对象了,那接下来不就是调用它里面的API方法,然后呢,去做我们想要做的操作。
16:08
对吧,行,就这样啊。
我来说两句