00:00
前面我们整合了ES官方的客户端,那接下来我们就测试用它来对ES做一些基本的增删改查操作,那所有的操作呢,我们都可以来参照ES的文档JA high level rest client,在这个文档里边我们看getting start,在做所有操作之前呢,首先了解第一个叫request options,我们翻译过来呢,就是请求的一些设置项,因为我们后来要发所有的请求,比如我们ES呢,添加了安全访问规则,所有请求要访问ES都必须带上一个安全的头等一些设置信息,那么呢,就可以通过request options来对所有请求来做一个统一设置,那这个设置呢,详细是来参照这个low level client的,把它来打开,在这一块呢,我们这就举一个例子,比如在下边request options里边,官方呢,建议我们把这个呢,Request option实例可以做成一个单实例的,我们以后呢,所有请求都来共享的来。
01:00
使用。比如举一个例子,我们使用request options的这些build,我们来给每一个请求发送之前构建一个授权的请求头信息。比如我们带上了自己的令牌,包括还可以来自定义一些我们这个响应的消费者,这是跟异步有关的调用信息等等等等,那设置完了以后呢,大家都可以来统一的使用这个,那我呢,就把这一块代码,我先复制到我们的这个ES的配置里边,来到我们ES的我们自己的配置项里边,那这块代码呢,我们虽然说我们现在用的不是很多,我们来把它放到这儿。Request option,我把这一块呢导入进来,然后呢,我们把所有的这个设置项我都给它注掉,那注调呢,因为我们现在还没有这些通用的设置,但未来如果我们有什么要需要设置的,我们就可以来到这进行设置,我把它呢改成public。好,我们让大家都可以来进行访问的。
02:00
这是我们通用的这个设置项,它基于默认规则来加的这些设置,那有了它以后呢,我们接下来再来操作我们ES的一些增删改查,首先我们来测试第一个index,那就是给ES里边存储一个数据,好来到我们的测试类,我们现在来测试用这个客户端给ES里边存储数据,来写我们第一个功能,这个呢,复制过来,那就叫index data来测试呢,给ES中存储数据,测试存储数据到我们这个ES,那这个存储怎么做?来参照文档打开来点击存储的这个API里边。首先要存储呢,我们需要发送一个index request,比如说我们这个存储请求,我们首先呢需要构造new一个index request,构造这么一个请求,然后呢,再来说我们这个数据的ID,那最简单的方式,如果我们要从哪些数据把这个数据的杰森字符串,那直接使用request.source设置进去,这是第一种方式,把我们数据呢用jas字符串设置过去,第二种方式我们也可以new一个index这个请求在这呢,第一个是来指定我们给哪个索引下存数据,然后呢,这个数据的唯一ID是什么?接下来我们还可以把数据做成一个map放进去,那上一个呢是做成了一个字符串。第三个我们还可以使用它提供的X content build将内容的这个构造器,我们想要构造一个对象了,用build start object开始一个对象,然后对象里边的内容再来构建,构建完了以后呢,再来end object。
03:42
啊,完了以后将对象传进去,这是我们又一中保存数据,那还有我们直接可以将数据利用S进行KVKVKV直接将数据的所有KV对都写在这来进行保存文档,这呢都说的很清楚,我们可以为SS提供对象的所有KV对,它呢也会把我们转换成这些接省数据。
04:05
那好,我们就先来做第一个保存,要保存先得有一个in,对request好把这个request呢创建出来,那创建出来以后呢,我们在request里边需要指定什么,我们把它点进去,来看它的构造器,构造器里边呢,首先第一个需要指定一个index,我们要在哪个索引下存储,比如我们现在的测试一个索引,我们就叫users,我们准备给这个下边存储数据,接下来构造器第二个我们还可以传这个type,但这个tap呢,由于已经过时了,所以我们这个呢也就不用了,包括呢,第三个我们完整的还可以传type,传ID,但这个type呢,早都已经过时了,所以呢,我们现在构造器先来整一个我们这个索引,我们给这个索引下存数据,那数据的ID是什么?我们就可以在这来设置ID,那不设置呢,它就默认会给我们生成一个ID,这个ID呢,全部都是字符串的形式,即使我们是一个浪数字,我们也。
05:05
也应该转换成字符串,如果不设置呢,将会自动生成,好那我们现在来设置一个ID,比如第一个数据,这是一号数据,那数据的内容是什么?那还是要通过index点一个参照之前文档有一个方法叫source source里边呢可以传很多种可能,第一种我们说它传一个可变变量,那就是将我们的数据直接可以写成K的形式,好,我们来写上我们的source,比如我们user里边有用户名,Username是张三。这都是K,对,好,我们就不用写冒号,这是第一个K,对,那第二个它还有它的年龄,那么就来接,再接着写age。我们写一个18,包括还有他的性别,比如我们真的我们来写一个男,这是我们做的一组数据,我们说数据呢,第一种可能是用这种方式,第二种参照文档,文档里边呢,我们刚才剖析了很多种方式,还有直接将杰森字符串放在这儿的。
06:10
所以呢,我们后来呢,可一般都是来用第二种,比如呢,我在这有一个自定义类型的这个对象来写一个class user对象,好user里边呢,有我们的string类型的username username。还有我们转类型的gender。还有我们int类型的H,我们都可以来在这来写上private的。我们把它的get set方法来写上,那直接呢,使用bank的at data注解。那写上以后呢,接下来我们用第二种方式,它的这个source,我直接可以把我们的对象用一个user。当这个对象为new的时候,可千万不能直接传对象,我们应该把它转成杰森数据传过去,好来new一个user,把这个user对象呢,我们来构造过来,Al创建出它,这个对象呢,我们转成杰森数据。
07:12
由如我们导了fast杰森,我们直接用它的这个工具杰森点一个to杰森string,把一个对象转成一个杰森字符串,好把这个字符串呢拿过来JA省字符串呢作为S的内容,哎,这就是我们要保存的内容。这个呢是我们数据的ID来,我们呢以后都使用这种方式,其他种方式我就不进行测试了,大家一一测试,那这一块我们将数据都准备好了以后,我们如何进行保存呢?我们继续来看官方文档,我们准备好了这么一个保存请求,一直往下翻,请求里边呢,我们还可以设置各种参数,比如它的超时设置,这么长时间没保存成功,那就返回失败,包括它的一些等待刷新策略,版本号等等,那一直往下。
08:03
咱们做完了以后,它这呢有一个叫central execution,就是我们同步的执行这块,还有一个异步的执行,所以我们想要来执行这个保存,可以使用同步与异步两种方式,那同步的方式就直接使用客户端调用index方法,将我们这次保存请求传过去,注意这一块呢,要传一个请求的设置项,那那个设置项呢,我们全局通用,把我们那个拿过来就行了,完了以后呢,会有一个响应,包括如果是异步保存也一样调用index ethnic,哎,我们是一个异步的方式。那一步方式呢,多了一个listener,就是请求成功以后,我们调用这个监听器的成功方法,失败方法,这个listener就类似于我们写g sa站请求的成功回调、失败回调、success以及error等这些回调函数一样。当我们现在呢,先暂时不考虑异步的方式,那我们接下来就来调用,那我们先来写一个client client就是我们注入的这个客户端,这个客户端里边呢有非常多的API,那index就是用来索引数据,Bug就是来批量操作,Delete那就是删除,包括exist判断存在还是不存在,Get就是来进行一些获取操作,包括multi match,多检索请求,那这一块呢就非常多了。
09:26
那么后来用到呢,就继续来说,那现在要进行一次索引保存,那我就写一个index,那的这次请求我拿过来,然后呢,我们请求的设置项,我们直接通过这个配置文件拿到默认的第一个common options,那这个呢,创建完就会有一个返回,好我们返回我们的这个数据,那这块呢也会有异,网络操作呢,都会有异常,我们先来把它抛出来。这一块呢,就是来执行我们真正的保存操作,执行操作,使用我们客户端执行,执行完了以后呢,这有一个响应,如果响应数据我们有需要,我们还可以来提取我们有用的响应数据。
10:12
那我就把这次响应呢,直接在这儿一打印就行了,那么再来操作之前,我先来给大家利用提单的,我们来检索一下,看一下我们准备要操作的这个user,索引一下users,我们这有一个,所以呢叫users,我们从未有过这个东西,我们点search,我们来找它下边的数据能不能找到呢?走,那默认呢,我们连这个索引都是没有的,但是通过这次保存进行测试。我们稍等一下看到呢,这有一个错误,这一块说呢,我们这个number of object,也就说我们要存储的这个对象数数量,Must even but was,一它这个even呢,指的就是我们必须是一个扁平的阶层数据,当然呢,现在没有这个阶层数据,那其实是有的,那说明呢,我们这个API掉的不对,我们还是来参照官方文档,我们来往上边我们发现呢,我们这一块要准备杰森数据的时候,一定要传我们的内容类型X content type,点杰森。
11:14
那我们就把这个内容类型把它复制过来,我们放到这儿来导入我们这个依赖,好,那现在呢,我们重新来执行。那我们看到呢,这一块就执行成功了,包括我们在这打印响应的数据,这都有一个简要,我们这个数据的索引是什么,它的类型是杠dock ID是一,版本是一,最终的结果是创建完成,包括它的CI number,以及这两个做乐观锁的操作,这一块呢也都有,那我们来看我们的K班里边来进行检索查询,走,那么发现呢,我们就查出了一个数据,当这个数据呢,默认什么都没有,没有的原因那就是我们这个user的对象它是空的,我们并没有给它设置上一些数据,好,那现在来设置上user name。
12:03
比如我们就叫张三,以及我们的H,我们就是18,以及我们其他的点一个set真的难,好那写的难来再来测试,那这个就有了,而且呢,我们之前保存过一号数据,我们还说再来保存这个数据。我们来看他到底是报错呢,还是有数据。我发现呢,这一块也是成功ID呢,还是一,只不过呢,版本已经变成二了,那现在再来查询我们这个数据走,那现在呢,一号的这个数据就有了。那么说这个所有呢,它本来就是一个保存更新二合一。更新也可以。这本来测试ES的第一个简单操作索引数据,那其他的所有操作我们全部都是可以来参照官方文档的,那么下一个来继续测试。
我来说两句