00:00
索引已经创建好了,那接下来我们就准备向索引中添加数据了,那么这个操作呢,其实和circle中添加数据呢是不一样的,因为我们买circle中添加数据啊,还需要增加表,但是新版本的ES中是没有表的概念的,所以添加数据时啊,是直接在索引中添加数据。大家可以看到,在postman当中,我们向ES服务器发送post请求,那么这个路径我们应该这么写来打开。打开以后点击加号,然后选择我们的这个路径拷贝。拷贝完成以后,在这个地方输入路径,这里选择我们的post。那么大家可以看到我们这个请求路径当中,前面的其实就是我们ES软件的地址以及索引的名称,后面这个叫下划线dock,它就表述的是索引中添加文档数据的意思,我们前面讲过了,我们添加数据就等同于添加文档,那所以这个就表示数据的意思,没有任何问题,那好,那我们现在点击send。点击完成以后,大家会发现它返回的响应当中会告诉你不对。
01:04
他们这里呀,有一个错误叫做request body is required,它表述的是请求体是必须要有的。那为什么会报这样的错误呢?你可以想象一下,当你添加数据的时候,你都没有传递数据,你怎么添加?所以啊,我们需要在body的位置把我们的数据放在请求体当中,但是我们的这个请求体的格式呢,应该是一个接格式,大家看在这儿我们拷贝一下,拷贝完成以后,那我们要添加杰森格式的数据呢?我们需要选择它,然后把这个改成叫杰森,那么这样的话呢,我们请求之后,我们的ES软件就会以杰森的方式来得到这条数据。那好,我们再去点击上点。点击完成以后,大家可以看到在我们当前的这个位置就已经创建成功,他告诉你created啊,创建成功。但是记住了,同学们,这里我们只能使用post,是不能使用put的,然后我点一下点点完put,你再去点击send,发现它这里呢,就出现了问题。
02:06
它不能够使用put,它需要使用我们的post,对吧,哎,就是这个意思。那好,我们来解释一下为什么这里不能用put,大家可以看到,当我们数据创建成功时啊,其实它是会返回一个数据的,大家看来我们点一下,我们点击post,然后选择send,点击完成以后,它会返回一个ID属性,这个ID属性表述的就是我们的数据的唯一性标识,它类似于我们的组件,可以认为是刚刚创建那条数据的哎,标识,而这个标识是由ES软件随机生成的。所以啊,同样的请求在你多次执行之后,它返回的结果是不一样的,大家观察一下我们的这个地方呢,是什么呢?930啊什么OK什么的,你再点。点击之后大家看还是吗?不是了,为什么呢?随机生成的,所以同样的请求多次发出之后,返回的结果它却不一样,那就说明我们的这个操作其实不是密等性的。
03:06
可是我们的put请求呢,就必须是幂等性的,所以这里不能使用。大家懂了吗?我们的post呀,它就没有这个要求,你是幂等性的也行,你不是幂等性的也行啊,所以呢,我们在这可以用啊,懂了吗?同学们,好了,那我们继续啊,顺着刚才的话题,数据生成以后,会生成一个随机的ID,那么这个ID会作为数据的唯一性标识使用,那么如果想要通过这个ID来查询文档数据的话,可以,但是比较麻烦,为什么?因为这个ID好记吗?不好记,那不好记的话,那么我们能不能为了方便记忆和使用,采用自己的方式来定义ID呢?告诉大家答案是yes,可以的,这就需要我们修改请求路径,在我们dock的后面啊,添加自定义的ID,一旦这个请求路径发送到ES软件,此时的ES就不会在生成自定义的或者说随机的ID了啊来,我们试一试,来写上一个我们叫1001。
04:08
这1001是你自己写的ID,那好我们点击send,记住还是post,我们点一下点点完以后大家会发现我们照样成功了,有没有发现它返回的结果呢?是1001对不对?哎,就是这样,那么它返回的结果是1001,记住这个时候就意味着是你给的是什么,它返回的就什么。所以呀,我们多次发出同样的请求,其实它的返回结果应该是相同的,对吗?这就是一种密等性的操作,那么密等性的操作的话,其实我们换另外一个方式也可以,我们换put来,我们改一下叫102,你改102的话,你点击send点。点击完成以后,大家看怎么了,诶照样成功了,对吗?所以这种方式没有任何问题,或者呀,我们为了更加明确,我们现在的操作是一个新增,你可以把这个dock呀改一下,你改成叫create。
05:04
创建也是可以的。我们写个103,我们写个put,你点击send,你会发现也没有任何的问题,它的这个地方依然是下划线dock,它表述的是文档数据的意思,对吧?哎,就是这样啊,好了,文档数据的创建我们就说到这里。
我来说两句