繁体   English   中英

在 Elasticsearch 中克隆和重新索引索引有什么区别?

[英]What's the difference between cloning and reindexing an index in Elasticsearch?

例如:

  1. 克隆API
  2. 重新索引 API

每个 API 什么时候最适合什么?

你有答案:“Reindex 不会从源索引复制设置。映射、分片计数、副本等必须提前配置。”

Clone 和 ReIndex 在 Elasticsearch 中执行类似的操作,但本质上还是有一些区别的。

什么是克隆操作?

克隆操作会将现有索引克隆到新索引中,其中每个原始主分片都被克隆到新索引中的新主分片中。 基本上,此功能是将现有索引复制到具有与原始索引相同的属性和设置的新索引。

以下是作为克隆操作的一部分发生的内部活动。

  • 首先,它创建一个与源索引具有相同定义的新目标索引。
  • 然后它将源索引中的段硬链接到目标索引中。 (如果文件系统不支持硬链接,那么所有段都被复制到新索引中,这是一个更耗时的过程。)
  • 最后,它恢复目标索引,就好像它是一个刚刚重新打开的关闭索引。

克隆功能在我们需要将索引原样复制到另一个索引的情况下很有用。 Clone 将在目标索引中维护与源索引相同的分片数、相同的映射和设置。

什么是 ReIndex 操作?

ReIndex操作复制源索引的内容并将其写入目标索引。 此操作仅复制数据,不复制索引设置。 在执行重新索引操作之前,我们需要使用所需的设置和映射预先创建目标索引。 源和目标可以是任何预先存在的索引、索引别名或数据流。 但是,源和目标必须不同。 ReIndex 适用于需要更新分片数量、更新映射、更新设置等的情况。我通常执行 reindex 来更新映射。

可以通过设置以下属性在后台进行ReIndex操作

wait_for_completion=false.

克隆操作的示例 API 请求:

POST /my_source_index/_clone/my_target_index

重新索引操作的示例 API 请求:

POST _reindex
{
  "source": {
    "index": "source_index"
  },
  "dest": {
    "index": "target_index"
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM