MST
星途 面试题库

面试题:ElasticSearch中doc_as_upsert参数的基本使用场景

请阐述在哪些情况下会使用ElasticSearch的doc_as_upsert参数,简单举例说明其在文档操作中的作用。
33.6万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. 使用场景
    • 当需要进行更新操作,并且不确定文档是否存在时,可使用doc_as_upsert参数。比如在一个日志记录系统中,可能有些日志条目第一次记录,有些是对已存在的日志条目进行补充更新。如果使用常规的更新操作,对于不存在的文档会报错,而使用doc_as_upsert就可以在文档不存在时进行插入操作,存在时进行更新操作。
  2. 在文档操作中的作用举例 假设我们有一个索引my_index,包含文档结构如下:
{
    "user": "张三",
    "message": "初始消息",
    "timestamp": "2023 - 10 - 01T12:00:00Z"
}

使用如下的update API 并结合doc_as_upsert参数:

POST my_index/_update/1
{
    "doc_as_upsert": true,
    "doc": {
        "message": "更新后的消息",
        "timestamp": "2023 - 10 - 01T13:00:00Z"
    }
}

如果文档id1的文档不存在,doc_as_upsert参数会使得Elasticsearch将doc中的内容作为新文档插入。如果文档id1的文档已存在,doc中的内容会用于更新现有文档。这样就可以用同一个操作实现插入和更新两种功能,简化了业务逻辑。