【问题标题】:Elasticsearch - How to update documentElasticsearch - 如何更新文档
【发布时间】:2018-01-31 20:02:47
【问题描述】:

elasticsearch如何更新文档?它会删除原始文件并制作新文件吗?我听说这就是nosql的更新方法。 elasticsearch 和其他 nosql 数据库一样吗?或者它将替换/插入需要的字段?

【问题讨论】:

标签: elasticsearch


【解决方案1】:

elasticsearch 中的文档是不可变对象。更新文档始终是重新索引,它包含以下步骤:

  • 检索 JSON(您要重新索引)
  • 改变它
  • 删除旧文档
  • 索引新文档

Elasticsearch documentation

【讨论】:

    【解决方案2】:

    例如,我使用的是 Elasticsearh 7.0.0。 首先,我创建了一个文档,

    PUT /employee/_doc/1

    {
        "first_name" : "John",
        "last_name" : "Snow",
        "age" : 19,
        "about" : "King in the north",
        "sex" : "male"
    }
    

    然后我通过更新它

    POST /employee/_update/1/

    {
        "doc": {  
            "first_name" : "Aegon",
            "last_name" : "Targaryen",
            "skill": "fighting and leading"
        }
    }
    

    最后,我得到了正确的结果

    GET /employee/_doc/1

    {
        "_index" : "employee",
        "_type" : "_doc",
        "_id" : "1",
        "_version" : 9,
        "_seq_no" : 11,
        "_primary_term" : 1,
        "found" : true,
        "_source" : {
            "first_name" : "Aegon",
            "last_name" : "Targaryen",
            "age" : 19,
            "about" : "King in the north",
            "sex" : "male",
            "skill" : "fighting and leading"
        }
    }
    

    【讨论】:

    • 感谢@kalehmann 的编辑!我错过了我的代码格式。您的帮助使答案易于阅读。
    【解决方案3】:

    答案可以查看documentation

    除了能够索引和替换文档之外,我们还可以 更新文件。请注意,尽管 Elasticsearch 实际上并没有这样做 引擎盖下的就地更新。每当我们进行更新时, Elasticsearch 删除旧文档,然后索引新文档 一次将更新应用到它。

    【讨论】:

    • 链接好像坏了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    相关资源
    最近更新 更多