Elasticsearch - 如何更新文档

Posted

技术标签:

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

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

【问题讨论】:

Does Elasticsearch reindex the documents automatically each time I update them的可能重复 【参考方案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 删除旧文档,然后索引新文档 一次将更新应用到它。

【讨论】:

链接好像坏了。

以上是关于Elasticsearch - 如何更新文档的主要内容,如果未能解决你的问题,请参考以下文章

〈二〉ElasticSearch的认识:索引类型文档

Elasticsearch:Dynamic field mapping

elasticSearch安装 Kibana安装 Sense安装

Elasticsearch - 如何更新文档

搜索模板elasticsearch

如何使用 NEST 更新 ElasticSearch 索引中的现有文档?