小智 7

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


小智 6

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

\n

什么是克隆操作?

\n

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

\n

以下是克隆操作期间发生的内部活动。

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

当我们需要将索引复制到另一个索引时,克隆功能非常有用。克隆将在目标索引中维护与源索引相同的分片数量、相同的映射和设置。

\n

什么是重新索引操作?

\n

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

\n

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

\n
wait_for_completion=false.\n
Run Code Online (Sandbox Code Playgroud)\n

克隆操作的 API 请求示例:

\n
POST /my_source_index/_clone/my_target_index\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
POST _reindex\n{\n  "source": {\n    "index": "source_index"\n  },\n  "dest": {\n    "index": "target_index"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n