Elasticsearch 字段更新机制

目录

不支持原地更新

更新过程

段合并(Segment Merge)

结论


不支持原地更新

    Elasticsearch 不支持原地更新(in-place update)索引中的单个字段。由于 Elasticsearch 使用了不可变的倒排索引,一旦文档被写入,它就不能被修改。

更新过程

  当需要更新文档中的一个或多个字段时,Elasticsearch 实际上执行以下步骤:

 1. 检索现有文档

  Elasticsearch 首先根据文档的 _id 查找到需要更新的文档。

 2. 创建新文档

   然后,Elasticsearch 创建一个新的文档版本,这个新版本包含了原始文档的内容以及所做的更新。

 3. 删除旧文档

   新文档被索引后,旧的文档被标记为删除,但实际上并不会立即从物理存储中移除。这些被标记为删除的文档在后续的段合并(segment merge)过程中会被清理。

 4. 索引新文档

   新文档随后被添加到索引中,这样搜索操作就能够检索到最新版本的文档。

段合并(Segment Merge)

     Elasticsearch 定期执行段合并,以维护索引的健康状态和性能。在这个过程中,多个小的段(segments)会合并成更大的段,同时清除已删除文档的数据。

结论

   在 Elasticsearch 中,更新字段实际上是通过检索重建并重新索引文档的过程完成的而不是原地直接修改单个字段。这种机制确保了索引的不可变性,但也意味着更新操作比简单的字段修改要复杂和代价更高。了解这一点对于优化 Elasticsearch 的使用和性能至关重要。

相关推荐

  1. Elasticsearch 字段更新机制

    2024-01-20 03:20:03       60 阅读
  2. ElasticSearch7.x版本更新映射字段

    2024-01-20 03:20:03       30 阅读
  3. Elasticsearch中添加字段

    2024-01-20 03:20:03       43 阅读
  4. Elasticsearch(ES) 添加/更新映射

    2024-01-20 03:20:03       29 阅读
  5. Elasticsearch 多索引条件过滤:字段匹配

    2024-01-20 03:20:03       54 阅读
  6. Elasticsearch重建索引-修改索引字段类型

    2024-01-20 03:20:03       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-20 03:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-20 03:20:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-20 03:20:03       82 阅读
  4. Python语言-面向对象

    2024-01-20 03:20:03       91 阅读

热门阅读

  1. ASOP的电池设置

    2024-01-20 03:20:03       52 阅读
  2. MacBook将大文件分割成很多个小文件split命

    2024-01-20 03:20:03       52 阅读
  3. 网络的各类型攻击方式

    2024-01-20 03:20:03       46 阅读
  4. mysql 主从通过mysqldump方式搭建

    2024-01-20 03:20:03       55 阅读
  5. 设计模式——访问者模式

    2024-01-20 03:20:03       51 阅读
  6. Go 语言中的接口类型转换详解

    2024-01-20 03:20:03       53 阅读
  7. 【笔记】认识凸优化

    2024-01-20 03:20:03       50 阅读