我有一个存储在Elasticsearch中的传入数据(日志)流。我需要实现一项功能,该功能可以连续检查分片的大小,并且当达到某个点(例如30GB)时,它将开始将数据存储在新的分片中。

我是Elasticsearch的新手,我找不到有关该操作的任何信息。在这种情况下,是否需要为每个分片创建一个新索引?

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

最佳答案

您想使用Rollover Index API,它应该适合您的需求。

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

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

然后,您需要创建一个过渡条件,如下所示:
POST /myalias/_rollover
{
  "conditions": {
    "max_size":  "30gb"
  }
}

每当myalias指向的索引大小达到30gb时,都会创建一个称为myindex-000002的新索引,并且别名将切换到该索引。因此,就您的客户端应用程序而言,您始终可以将数据发送到myalias,而其余的则由ES完成。

10-04 22:41