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

时间:2016-11-18 16:55:56

标签: elasticsearch logstash kibana

我正在尝试从1.x升级我们的ELK堆栈。 5.x遵循re-index from remote说明。我不确定如何导出我需要创建的索引列表,然后将该列表导入新实例。我使用this command创建了一个索引列表,两者都是“漂亮”,没有,但我不确定要使用哪种文件格式以及下一步该文件的内容。

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

我显然没有足够的声誉来链接“创建索引”和“批量”指令,所以道歉。

2 个答案:

答案 0 :(得分: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
  }
}
'

答案 1 :(得分: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中任何预先存在的机制的方向,请做。