【elasticsearch】reindex 操作将索引的数据复制到另一个索引

embedded/2025/2/2 4:51:01/

在Elasticsearch中,reindex 操作用于将一个索引的数据复制到另一个索引。常用的 reindex 命令有很多细节,下面是一些常见用法和命令详解:

基本命令

  1. 基础Reindex命令

    POST /_reindex
    {"source": {"index": "source_index"},"dest": {"index": "destination_index"}
    }
    
    • source: 需要复制数据的源索引。
    • dest: 数据需要复制到的目标索引。

    这个命令会将 source_index 中的所有文档复制到 destination_index 中。

配图示例:

+-------------------+     Reindex       +----------------------+
|                   |    ----------->   |                      |
|    source_index   |                   |   destination_index  |
|                   |                   |                      |
+-------------------+                   +----------------------+

使用查询过滤数据

  1. 基于查询的Reindex(只复制符合条件的文档)

    POST /_reindex
    {"source": {"index": "source_index","query": {"range": {"date": {"gte": "2024-01-01","lte": "2024-12-31"}}}},"dest": {"index": "destination_index"}
    }
    
    • query: 用于过滤哪些文档需要被复制。在此示例中,只有 date 字段在 2024 年的文档会被复制到目标索引。

配图示例:

+-------------------+    Query Filter    +----------------------+
|                   |     ----------->   |                      |
|    source_index   |  (range: date:2024)|   destination_index  |
|                   |                    |                      |
+-------------------+                    +----------------------+

重建索引时更新文档

  1. 重建时更新文档(在复制时修改字段)

    如果在重建时需要对文档做一些变更,可以使用 script 字段。

    POST /_reindex
    {"source": {"index": "source_index"},"dest": {"index": "destination_index"},"script": {"source": "ctx._source['field_name'] = 'new_value'"}
    }
    
    • script: 用于在重建时修改文档内容。在此示例中,字段 field_name 会被更新为 new_value

在复制文档时,还可以通过 script 修改文档中的字段。例如,修改 price 字段的值。

配图示例:

+-------------------+   Script Modify    +----------------------+
|                   |     ----------->   |                      |
|    source_index   |    (price * 1.1)   |   destination_index  |
|                   |                    |                      |
+-------------------+                    +----------------------+

限制批量操作数量

  1. 限制每批次处理的文档数量

    默认情况下,reindex 会一次性处理所有文档,可以通过设置 sizescroll 控制批量处理的数量。

    POST /_reindex
    {"source": {"index": "source_index","size": 1000},"dest": {"index": "destination_index"}
    }
    
    • size: 每次从源索引中读取的文档数量(每次处理多少条数据)。

配图示例:

+-------------------+     Batch Size      +----------------------+
|                   |     ----------->    |                      |
|    source_index   |     (size: 1000)    |   destination_index  |
|                   |                     |                      |
+-------------------+                     +----------------------+

使用 wait_for_completion 控制命令同步/异步执行

  1. 同步或异步执行Reindex

    默认情况下,reindex 会异步执行。可以使用 wait_for_completion 控制它是否等待执行完成。

    POST /_reindex?wait_for_completion=true
    
    • wait_for_completion: 设置为 true 表示等待操作完成后才返回结果,设置为 false 时会异步执行,立即返回。

错误处理和重试

  1. 处理错误和重试

    reindex 命令还支持 on_failure 来处理失败的文档(如记录日志、重试等)。

    POST /_reindex
    {"source": {"index": "source_index"},"dest": {"index": "destination_index"},"on_failure": [{"op": "index","index": "error_index","doc_as_upsert": true}]
    }
    
    • on_failure: 用于处理错误的文档,比如将失败的文档发送到另一个索引 error_index

http://www.ppmy.cn/embedded/158813.html

相关文章

kafka消费者详细介绍(超级详细)

文章目录 一、Kafka 消费者与消费者组1.1 Kafka 消费者(Consumer)概述1.1.1 消费者工作流程1.1.2 消费者的关键配置 1.2 Kafka 消费者组(Consumer Group)概述1.2.1 消费者组的工作原理1.2.2 消费者组的优点1.2.3 消费者组的再均衡…

【信息系统项目管理师-选择真题】2005下半年综合知识答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7~8题】【第9~10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】【第22题…

项目部署(springboot项目)

1、安装Nginx,并开启 2、前端项目打包:npm run build:prod--->dist 3、后端项目打包:install--->xxx.jar 4、开放需要的端口号:比如我的后端项目端口号为8282,则需要防火墙和服务器同时开发8282端口 5、将di…

CTF-web: phar反序列化+数据库伪造 [DASCTF2024最后一战 strange_php]

step 1 如何触发反序列化? 漏洞入口在 welcome.php case delete: // 获取删除留言的路径,优先使用 POST 请求中的路径,否则使用会话中的路径 $message $_POST[message_path] ? $_POST[message_path] : $_SESSION[message_path]; $msg $userMes…

Baklib对比其他知识管理工具的优势及应用效果全面分析

内容概要 Baklib知识中台作为一种集成化的数字化平台,其核心功能围绕知识的高效管理、共享以及运用展开。这一平台不仅为企业提供了统一的知识管理架构,还依托智能化技术,使得组织内外的知识资源能够实现流畅的交互与利用。通过Baklib&#…

事务03之MVCC机制

MVCC 多版本并发控制机制 文章目录 MVCC 多版本并发控制机制一:并发事务的场景1:读读场景2:写写场景3:读写 or 写读场景 二:MVCC机制综述1:MVCC日常生活的体现2:多版本并发控制 三:M…

C++初阶 -- 初识STL和string类详细使用接口的教程(万字大章)

目录 一、STL 1.1 什么是STL 1.2 STL的版本 1.3 STL的六大组件 二、string类 2.1 string类的基本介绍 2.2 string类的默认成员函数 2.2.1 构造函数 2.2.2 析构函数 2.2.3 赋值运算符重载 2.3 string类对象的容量操作 2.3.1 size和length 2.3.2 capacity 2.3.3 r…

Contrastive Imitation Learning

机器人模仿学习中对比解码的一致性采样 摘要 本文中,我们在机器人应用的对比模仿学习中,利用一致性采样来挖掘演示质量中的样本间关系。通过在排序后的演示对比解码过程中,引入相邻样本间的一致性机制,我们旨在改进用于机器人学习…