讲完了索引的CRUD,我们来看一下文档怎么创建,在ES中文档的创建和在数据库中创建元素是相同含义,那下面让我们看一下在ES中是怎么创建文档的。

    首先我们需要说明,创建文档我们最原始的方式是使用post的request方式,具体一会再讲。比如说我们现在要在shopping索引中创建一个文档,那我们就可以用这种URI去创建:http://localhost:9200/shopping/_doc
    这里的_doc表示的创建文档,但这时候如果我们点击send会出现如下问题:
    截屏2021-05-10 下午4.19.38.png

    出现上述问题的原因是,我们现在确实是要创建一个文档,但是没有数据啊!没有数据就没有创建文档的意义了不是吗,那我们的数据保存在哪呢?通常情况下我们的数据都是以Json形式传递的,而Json又是在body中传递的,所以我们找到postman中的Body,并在其内部选择Json格式,将我们需要传递的数据以Json形式保存在ES中。
    BFC9384418B05FFB20BBB8B598950C7A.png
    我们可以看到现在数据成功就成功传输啦!然后我们注意这里的数据返回中有一个_id,他表示的是一个系统自动生成的id号,每次进行post请求都会不相同,这也就表示了我每次创建一个文档都是不相同的,因此这不符合幂等性,而我们之前说过在ES中如果你想使用put请求,那你必须要保证这次请求时幂等性的,那有没有什么办法可以让我们自己来指定这个id,使他不被改变,从而使用put进行请求呢?答案是可以的,我们可以在URI中加入/xxxx来表示一个指定id,这个id是不会改变的,那此时我们就可以用put进行请求了,同时_doc也可以改成_create进行创建文档。