2017-03-08 43 views
1

目前正在開展工作,需要一些幫助。我將從一個sql數據庫中填充一個彈性索引。從sql數據庫中將會有一個初始完整的reindex,然後會有更新/刪除/插入更新的夜間工作。重建索引零停機時間

如果發生重大故障,我可能需要做完全重新索引。理想情況下,我希望零宕機。我確實找到了一些關於創建別名等的文章,但是這看起來是字段映射的更新。我的情況是來自我的源數據庫的數據的完全重新索引。我能得到的數據推文檔彈性和彈性只會更新現有的索引,因爲id將是相同的?還是我需要做點別的?

問候

伊斯梅爾

回答

0

對於零停機時間,你可以創建新的索引,從數據庫填充它,並使用別名來從舊索引切換到新的一個。步驟:

  1. 打電話給你的主索引像main_index_1(或任何你喜歡)
  2. 該指數名爲main_index

    curl -XPUT 'localhost:9200/main_index_1/_alias/main_index?pretty

  3. 設置您的應用程序指向創建一個別名這個別名

  4. 創建一個名爲main_index_2的新索引並從您的數據庫索引它
  5. 切換別名指向新的索引

    curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d { "actions": [ { "remove": { "index": "main_index_1", "alias": "main_index" }}, { "add": { "index": "main_index_2", "alias": "main_index" }} ] }

+0

酷,但只是推高的數據應該只是更新現有數據,仍然保持索引了這麼0停機呢? – Ismail

+0

理論上是的,但你說的是重大失敗。在這種情況下什麼會失敗? – paqash

+0

對不起可能不好。我從數據庫獲得的數據更新必須在一段時間內提取並推出。在那段時間之後,數據會被寫入新的數據。如果在那段時間數據提取失敗,那麼我需要重建完整的索引。然而,在重建期間,我希望索引仍然可用,即使它可能有過時的數據。 – Ismail