2016-11-18 676 views
2

我試圖按照re-index from remote說明從1.x> 5.x升級我們的ELK堆棧。我不知道如何導出我需要創建的索引列表,然後將該列表導入到新實例中。我創建了一個使用this command的索引列表,這兩個列表都帶有「漂亮」和「不漂亮」,但我不確定要使用哪種文件格式以及下一步如何處理該文件。如何在elasticsearch中批量創建(導出/導入)索引?

創建索引指令並不涉及如何一次創建多個指令,而批量指令僅涉及創建/索引文檔,而不是創建索引本身。任何關於如何最好地遵循升級說明的幫助將不勝感激。

我顯然沒有足夠的聲望來鏈接「創建索引」和「批量」指令,所以對此表示歉意。

+0

@JXG從下面的答案殼解決方案沒有爲你工作? – Val

+0

@Val「相同的捲曲命令」:不。我的意思是,這是一個很好的解決方法,這是我使用的類型,但它與要求的相反。 – JXG

+0

@JXG所以你想要一個單一的curl命令,將創建N索引在一個鏡頭與相同的索引設置? – Val

回答

0

之所以能夠使用sed,然後喂通過下面的腳本文件,通過饋通的索引列表創建索引的格式列表來實現:

#! /bin/bash 

while read some_index; do 
curl -XPUT "localhost:9200/$some_index?pretty" -d' 
{ 
    "settings" : { 
     "index" : { 
      "refresh_interval" : -1, 
      "number_of_replicas" : 0 
     } 
    } 
}' 
sleep 1 
done <$1 

如果任何人都可以在任何方向指向了我Elasticsearch中預先存在的機制,但請。

2

使用單個curl命令,您可以創建一個index template,這將在文檔碰到您的ES 5.x集羣時觸發索引創建。

基本上,這個單個curl命令將創建一個索引模板,它將爲每個新創建的索引啓動。然後,您可以使用「從遠程重新索引」技術將文檔從ES 1.x移動到ES 5.x,並且不用擔心索引創建,因爲索引模板會處理它。

curl -XPUT 'localhost:9200/_template/my_template' -H 'Content-Type: application/json' -d' 
{ 
    "template": "*", 
    "settings": { 
    "index.refresh_interval" : -1, 
    "index.number_of_replicas" : 0 
    } 
} 
' 
+0

如果我正在處理有數百個指數。如果我有,比如說3,那麼似乎開銷並不能證明模板工作是正確的。 – JXG

+0

什麼開銷?創建模板不涉及開銷,它只是簡化索引創建的一種方式。 – Val

+0

如果你只有3個索引,我不明白爲什麼必須運行單個捲曲命令很重要。 – Val