我需要一种方法,当碎片大小从给定的大小限制增加时,我需要将该碎片的数据重新分配到两个相同大小的碎片中,方法是再添加一个碎片,并将原来大小的一半超出碎片数据传输到同一索引中新创建的碎片中。
我有如下所示的碎片状态,但需要帮助找到一种分发数据的方法
{
"index": "public",
"shard": "0",
"store": "20GB"
}我尝试过拆分索引API 链接,但这并不能达到目的,因为它需要一个新的不存在的索引,并且它不能对现有索引执行魔术,就像上面的索引'public‘需要相同一样,但是shard应该在它们之间增加和分发数据。
发布于 2020-12-08 06:52:45
这是不可能的,您不能在同一个索引上更改elasticsearch索引的主碎片,这是因为如果您的路由和位置取决于主碎片的数量(在创建索引时创建)。
如果您更改它,elasticsearch将不得不更改路由算法,并再次分发数据,以便在所有碎片(包括副本)中均匀分布数据。在分布式的大型有状态应用程序上做上述工作并非易事,而elasticsearch目前还不支持它。
发布于 2020-12-08 06:59:28
如果您的部分数据是只读的,并且您可以激活基本许可(可能不是在aws中),您就可以定义一个ILM,您不能在不重新索引的情况下添加一个碎片(但可以添加一个副本)。
在Open中,可以使用等效的:https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/ism.html
https://stackoverflow.com/questions/65193948
复制相似问题