我有一个存储在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完成。