MST
星途 面试题库

面试题:ElasticSearch中upsert元素在更新操作里如何使用

在ElasticSearch的更新操作中,简述upsert元素的功能,并给出一个简单的使用示例,说明当文档存在和不存在时,upsert是如何工作的。
15.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

upsert元素功能

在ElasticSearch的更新操作中,upsert元素用于在文档不存在时执行插入操作,若文档已存在,则执行正常的更新操作。它提供了一种在单个请求中处理插入和更新的便捷方式。

使用示例

假设我们有一个索引test_index,文档类型为test_type,且文档包含nameage字段。

文档不存在时

POST test_index/test_type/1/_update
{
    "upsert": {
        "name": "John",
        "age": 30
    },
    "doc": {
        "age": 31
    }
}

在这个示例中,由于文档test_index/test_type/1不存在,upsert中的内容会被当作新文档插入。插入后的文档内容为{"name": "John", "age": 30}

文档存在时

假设已有文档test_index/test_type/1,内容为{"name": "John", "age": 30}。再次执行上述更新操作:

POST test_index/test_type/1/_update
{
    "upsert": {
        "name": "John",
        "age": 30
    },
    "doc": {
        "age": 31
    }
}

此时文档存在,doc部分的内容会被用于更新现有文档,更新后的文档内容为{"name": "John", "age": 31},而upsert部分在此情况下不会生效。