【Elasticsearch】reindex

Elasticsearch 的 Reindex API 是一个强大的工具,用于将文档从一个源索引复制到另一个目标索引。它不仅可以用于简单的数据迁移,还可以在重新索引的过程中修改文档内容、过滤文档、并行化处理,甚至从远程集群重新索引数据。以下是 Reindex API 的详细功能和使用场景总结:

---

Elasticsearch Reindex API 详解

1\.基本功能

1.1 从一个索引复制到另一个索引

Reindex API 的核心功能是将文档从一个源索引复制到目标索引。源可以是任何现有的索引、别名或数据流,而目标必须与源不同。例如:

```http

POST _reindex

{

  "source": {

    "index": "my-old-index"

  },

  "dest": {

    "index": "my-new-index"

  }

}

```

1.2 支持从多个源索引复制

你可以通过在`source`中指定多个索引,一次性从多个源索引中复制文档:

```http

POST _reindex

{

  "source": {

    "index": ["my-old-index-1", "my-old-index-2"]

  },

  "dest": {

    "index": "my-new-index"

  }

}

```

1.3 支持数据流(Data Streams)

Reindex API 还支持将文档重新索引到数据流中。如果目标是数据流,`op_type`必须设置为`create`,以确保只添加新文档,而不会更新已存在的文档。

---

2\.高级功能

2.1 使用查询过滤文档

你可以通过在`source`中添加查询,仅重新索引满足条件的文档。例如,仅复制`user.id`为`kimchy`的文档:

```http

POST _reindex

{

  "source": {

    "index": "my-old-index",

    "query": {

      "term": {

        "user.id": "kimchy"

      }

    }

  },

  "dest": {

    "index": "my-new-index"

  }

}

```

2.2 使用脚本修改文档

Reindex API 支持在重新索引过程中通过脚本修改文档内容。例如,你可以重命名字段或删除字段:

```http

POST _reindex

{

  "source": {

    "index": "my-old-index"

  },

  "dest": {

    "index": "my-new-index"

  },

  "script": {

    "source": "ctx._source.new_field = ctx._source.remove('old_field')"

  }

}

```

2.3 并行化处理(Sliced Scroll)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值