面试题答案
一键面试- 使用场景
- 当需要进行更新操作,并且不确定文档是否存在时,可使用
doc_as_upsert
参数。比如在一个日志记录系统中,可能有些日志条目第一次记录,有些是对已存在的日志条目进行补充更新。如果使用常规的更新操作,对于不存在的文档会报错,而使用doc_as_upsert
就可以在文档不存在时进行插入操作,存在时进行更新操作。
- 当需要进行更新操作,并且不确定文档是否存在时,可使用
- 在文档操作中的作用举例
假设我们有一个索引
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"
}
}
如果文档id
为1
的文档不存在,doc_as_upsert
参数会使得Elasticsearch将doc
中的内容作为新文档插入。如果文档id
为1
的文档已存在,doc
中的内容会用于更新现有文档。这样就可以用同一个操作实现插入和更新两种功能,简化了业务逻辑。