代码之家  ›  专栏  ›  技术社区  ›  Jan Pisl

如何实现Elasticsearch碎片大小的自动控制?

  •  0
  • Jan Pisl  · 技术社区  · 7 年前

    我有一个存储在Elasticsearch中的传入数据流(日志)。我需要实现一个功能,不断检查碎片的大小,当它达到某个点(例如30GB)时,它将开始在新的碎片中存储数据。

    我是Elasticsearch的新手,我找不到任何关于如何做到这一点的信息。在这种情况下,是否需要为每个碎片创建新索引?

    如果有任何信息或链接,我将不胜感激。我正在使用Elasticsearch 6.0。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Val    7 年前

    您想使用 Rollover Index API ,这应该适合您的需要。

    基本上是这样的。您需要有一个指向单个索引的别名,下面我们正在创建索引 myindex-000001 使用别名 myalias

    PUT /myindex-000001 
    {
      "aliases": {
        "myalias": {}
      }
    }
    

    然后需要创建一个滚动条件,如下所示:

    POST /myalias/_rollover 
    {
      "conditions": {
        "max_size":  "30gb"
      }
    }
    

    每当索引指向 myalias公司 大小达到30gb,一个名为 myindex-000002 将创建,别名将切换到它。因此,就您的客户端应用程序而言,您始终可以将数据发送到 myalias公司 剩下的由ES来完成。