【发布时间】:2018-01-31 20:02:47
【问题描述】:
elasticsearch如何更新文档?它会删除原始文件并制作新文件吗?我听说这就是nosql的更新方法。 elasticsearch 和其他 nosql 数据库一样吗?或者它将替换/插入需要的字段?
【问题讨论】:
标签: elasticsearch
elasticsearch如何更新文档?它会删除原始文件并制作新文件吗?我听说这就是nosql的更新方法。 elasticsearch 和其他 nosql 数据库一样吗?或者它将替换/插入需要的字段?
【问题讨论】:
标签: elasticsearch
elasticsearch 中的文档是不可变对象。更新文档始终是重新索引,它包含以下步骤:
【讨论】:
例如,我使用的是 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"
}
}
【讨论】:
答案可以查看documentation:
除了能够索引和替换文档之外,我们还可以 更新文件。请注意,尽管 Elasticsearch 实际上并没有这样做 引擎盖下的就地更新。每当我们进行更新时, Elasticsearch 删除旧文档,然后索引新文档 一次将更新应用到它。
【讨论】: