簡體   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