当前位置: 首页 > article >正文

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

在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.kler.cn/a/519253.html

相关文章:

  • 关于使用PHP时WordPress排错——“这意味着您在wp-config.php文件中指定的用户名和密码信息不正确”的解决办法
  • 【C++探索之路】STL---string
  • vue2和vue3指令
  • 备赛蓝桥杯之第十五届职业院校组省赛第三题:产品360度展示
  • 将本地项目上传到 GitLab/GitHub
  • 笔试-二维数组
  • 【2024年华为OD机试】 (A卷,200分)- 几何平均值最大子数组(JavaScriptJava PythonC/C++)
  • 《CPython Internals》阅读笔记:p356-p359
  • Spring 框架基础:IOC 与 AOP 原理剖析及面试要点
  • Spring Boot 无缝集成SpringAI的函数调用模块
  • android12源码中用第三方APK替换原生launcher
  • 半小时速通flume-flume正文学习
  • 【深入理解SpringCloud微服务】Sentinel源码解析——DegradeSlot熔断规则
  • 【漫话机器学习系列】060.前馈神经网络(Feed Forward Neural Networks, FFNN)
  • 能源新动向:智慧能源平台助力推动新型电力负荷管理系统建设
  • 面试技巧——压力面题目与参考答案
  • 软件越跑越慢的原因分析
  • (一)QT的简介与环境配置WIN11
  • Vivado生成X1或X4位宽mcs文件并固化到flash
  • ES设置证书和创建用户,kibana连接es
  • 【前沿聚焦】机器学习的未来版图:从自动化到隐私保护的技术突破
  • 通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
  • Python 字符串加密
  • 什么是业务对象
  • C++练习 —— 命名空间、引用、类的定义、构造函数和析构函数、运算符重载、const成员函数、类相关OJ题
  • 2024:人工智能大模型的璀璨年代