将 aws elasticsearch 主要分片内容重新分配到同一现有索引中的两个大小相等的分片
Redistributing aws elasticsearch primary shard content into two equal sized shard in same existing index
我需要一种方法,每当分片大小从给定的大小限制增加时,我需要通过添加一个分片并将原始大小的一半超过分片的数据传输到新的分片中,将该分片的数据重新分配到两个大小相等的分片中在同一索引中创建分片。
我得到了如下的分片状态,但需要帮助找到一种分发数据的方法
{
"index": "public",
"shard": "0",
"store": "20GB"
}
P.S。我试过 Split Index API Link 但这没有达到目的,因为它需要一个新的不存在的索引并且它不能在现有索引,如上例中的索引 'public' 需要相同,但分片应增加并在它们之间分配数据
这是不可能的,您不能在同一索引上更改 elasticsearch 索引的主分片,这是因为如果您的路由和位置取决于主分片的数量(在索引创建时创建)。
而且如果你改变它,elasticsearch将不得不改变路由算法并重新分发数据以将数据均匀分布在所有分片(包括副本)中。 在分布式大型有状态应用程序上执行上述操作并非易事,elasticsearch 目前还不支持它。
你不能只添加一个分片而不重建索引(但你可以添加一个副本)
如果您的部分数据是只读的,并且您可以激活基本许可证,(可能不是在 aws 中),您可以定义一个 ILM。
在 Open Distro 中,您可以使用等效项:
https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/ism.html
我需要一种方法,每当分片大小从给定的大小限制增加时,我需要通过添加一个分片并将原始大小的一半超过分片的数据传输到新的分片中,将该分片的数据重新分配到两个大小相等的分片中在同一索引中创建分片。
我得到了如下的分片状态,但需要帮助找到一种分发数据的方法
{
"index": "public",
"shard": "0",
"store": "20GB"
}
P.S。我试过 Split Index API Link 但这没有达到目的,因为它需要一个新的不存在的索引并且它不能在现有索引,如上例中的索引 'public' 需要相同,但分片应增加并在它们之间分配数据
这是不可能的,您不能在同一索引上更改 elasticsearch 索引的主分片,这是因为如果您的路由和位置取决于主分片的数量(在索引创建时创建)。
而且如果你改变它,elasticsearch将不得不改变路由算法并重新分发数据以将数据均匀分布在所有分片(包括副本)中。 在分布式大型有状态应用程序上执行上述操作并非易事,elasticsearch 目前还不支持它。
你不能只添加一个分片而不重建索引(但你可以添加一个副本) 如果您的部分数据是只读的,并且您可以激活基本许可证,(可能不是在 aws 中),您可以定义一个 ILM。
在 Open Distro 中,您可以使用等效项: https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/ism.html