在elasticsearch中,这2个API有什么区别?
PUT /<target>/_create/<_id>
POST /<target>/_create/<_id>
他们的行为似乎完全一样。如果我第二次发送相同的请求,两者都会创建带有 id 的文档,并且当它已经退出时会失败。
PUT //_create/<_id>
PUT 是幂等的,这意味着如果多次发送相同的 PUT 请求,它将始终得到相同的结果。 此处使用 PUT 明确指定您要在特定位置创建资源。这就是为什么当您有已知的文档 ID 时,它是更常见的选择。
POST //_create/<_id>
POST 在 REST 语义中并不是严格幂等的。但是,在使用 _create 的这种特殊情况下,它的行为与 PUT 类似,因为如果文档已存在,_create 本身就会失败。 在客户端不严格管理文档 ID 的情况下,您可能会看到使用 POST,但一般来说,当您直接指定 ID 时,首选 PUT。
对于在 Elasticsearch 中创建具有特定 ID 的文档,PUT 通常是首选方法,因为它具有幂等行为,即使 PUT 和 POST 都会为您提供与 _create 相同的结果。