如何在elasticsearch中批量创建(导出/导入)索引?

问题描述:

我试图按照re-index from remote说明从1.x> 5.x升级我们的ELK堆栈。我不知道如何导出我需要创建的索引列表,然后将该列表导入到新实例中。我创建了一个使用this command的索引列表,这两个列表都带有“漂亮”和“不漂亮”,但我不确定要使用哪种文件格式以及下一步如何处理该文件。如何在elasticsearch中批量创建(导出/导入)索引?

创建索引指令并不涉及如何一次创建多个指令,而批量指令仅涉及创建/索引文档,而不是创建索引本身。任何关于如何最好地遵循升级说明的帮助将不胜感激。

我显然没有足够的声望来链接“创建索引”和“批量”指令,所以对此表示歉意。

+0

@JXG从下面的答案壳解决方案没有为你工作? – Val

+0

@Val“相同的卷曲命令”:不。我的意思是,这是一个很好的解决方法,这是我使用的类型,但它与要求的相反。 – JXG

+0

@JXG所以你想要一个单一的curl命令,将创建N索引在一个镜头与相同的索引设置? – Val

之所以能够使用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中预先存在的机制,但请。

使用单个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