gpt4 book ai didi

elasticsearch - Elasticsearch中黑白修改和更新有什么区别?

转载 作者:行者123 更新时间:2023-12-03 00:48:25 24 4
gpt4 key购买 nike

我关注的是Elasticsearch官方文档,其中有关于修改文档的部分: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/_modifying_your_data.html
所以我已经在/customer/_doc/1下有一个文档:

{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "ajay"
}
}

以下是“修改”的请求
PUT /customer/_doc/1
{
"firstname": "ajay",
"lastname": "tanwar"

}
GET将返回更新的文档
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"_seq_no" : 2,
"_primary_term" : 1,
"found" : true,
"_source" : {
"firstname" : "ajay",
"lastname" : "tanwar"
}
}

在文档的下一页上, 更新文档 https://www.elastic.co/guide/en/elasticsearch/reference/6.2/_updating_documents.html
以下是用于“更新”的请求
POST /customer/_doc/1/_update
{
"doc":{
"firstname": "ajay",
"lastname": "tanwar"
}
}

这也返回与“修改”相同的结果。

我注意到这两个方面的两个区别:
  • “修改”请求在每个请求上更新_version。而
    “更新”请求使_version保持相同
  • “修改”请求的响应包含"result" : "updated",而
    “更新”请求的响应包含"result" : "noop"

  • 但是我有几个疑问:首先,为什么“修改”返回 "result" : "updated"? Docs本身说这是一个修改操作。以及为什么“修改”返回 "result" : "noop"?什么是 noop BTW?

    如果顺理成章,修改和更新就是一回事。这两个不同的API的目的是什么?

    最佳答案

    当您修改文档时,您将删除旧文档并在其位置插入一个全新的文档。这类似于HTTP的PUT方法,因为它只是用HTTP正文中发送的内容替换了旧文档。

    当您更新文档时,您将对旧文档进行更改。在内部,ElasticSearch还将删除旧文档并插入新的(更新的)文档。但是,应将此操作视为只是对旧文档进行了更改。这类似于HTTP的PATCH方法,因为它将保留旧文档并仅应用在HTTP正文中发送的更改。
    "result" : "updated"表示已对ElasticSearch数据库进行了更改,而"result" : "noop"(无操作)则意味着什么都没有发生(可能是因为更新后的最终结果与更新前的结果相同)。

    关于elasticsearch - Elasticsearch中黑白修改和更新有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57136550/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com