【问题标题】:How to bulk create (export/import) indices in elasticsearch?如何在弹性搜索中批量创建(导出/导入)索引?
【发布时间】:2017-04-02 14:44:56
【问题描述】:

我正在尝试按照re-index from remote 说明将我们的 ELK 堆栈从 1.x > 5.x 升级。我不确定如何导出我需要创建的索引列表,然后将该列表导入到新实例中。我已经使用this command 创建了一个索引列表,包括“漂亮”和不带“漂亮”,但我不确定要使用哪种文件格式以及接下来如何处理该文件。

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

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

【问题讨论】:

  • @JXG 以下答案中的 shell 解决方案对您不起作用?
  • @Val“相同的 curl 命令”:没有。我的意思是,这是一个很好的解决方法,它是我使用的东西的类型,但它与所要求的相反。
  • @JXG 所以你想要一个 curl 命令,用相同的索引设置一次性创建 N 个索引?
  • @JXG 您的索引名称是否具有共同的模式?如果是,一种方法是创建一个index template

标签: elasticsearch logstash kibana


【解决方案1】:

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

【讨论】:

  • 如果我要处理数百个索引,这将是有意义的。如果我有 3 个,那么开销似乎不能证明模板工作是合理的。
  • 什么开销?创建模板不涉及任何开销,它只是一种简化索引创建的方法。
  • 如果你只有 3 个索引,我不太明白为什么必须运行一个 curl 命令这么重要。
  • 嗯,这是一个测试(实际上,它是 2 个索引),所以它经常运行。 Elastic 有这个优雅的 API 来获取多个索引,哎呀,甚至删除它们。但创造没有类似物。它需要一个解释。老实说,这并不重要,但它让我有些恼火,而且说实话,我做过的任何事情都不是那么重要。
  • 如果它在测试中并且经常运行,最好利用可以在拆卸过程中创建并在拆卸过程中删除的索引模板。获取和删除索引不需要任何有效负载,而创建索引则需要,这可能就是为什么不支持一次创建多个索引的原因,因为不同的索引可能需要不同的设置。
【解决方案2】:

能够通过通过 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 中任何现有机制的方向,请这样做。

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 2014-09-01
    • 2014-03-17
    • 2022-06-16
    • 2016-01-17
    • 2016-06-20
    相关资源
    最近更新 更多