我需要一种方法,每当碎片大小从给定的大小限制增加时,我需要通过再添加一个碎片将该碎片的数据重新分配到两个相同大小的碎片中,并将超过碎片大小的原始数据的一半传输到同一索引中新创建的碎片中。
我有如下的碎片状态,但需要帮助找到一种方法来分发数据
{
"index": "public",
"shard": "0",
"store": "20GB"
}
p、 我尝试过分割索引apilink,但这并不能达到目的,因为它需要一个新的不存在的索引,它不能在现有的索引上发挥神奇的作用,就像在上面的例子中,索引'public'需要相同,但shard应该增加并在它们之间分发数据
2条答案
按热度按时间3z6pesqy1#
这是不可能的,您不能在同一索引上更改elasticsearch索引的主碎片,这是因为如果您的路由和位置取决于主碎片的数量(在索引创建时创建的)。
如果您更改它,elasticsearch将不得不更改路由算法并再次分发数据,以便在所有碎片(包括副本)中均匀地分发数据。在分布式大规模有状态应用程序上执行上述操作并非易事,而elasticsearch目前还不支持这一功能。
g9icjywg2#
如果您的部分数据是只读的,并且您可以激活基本许可证(可能不在aws中),您可以定义ilm,那么您不能只添加碎片而不重新编制索引(但可以添加副本)。
在开放发行版中,可以使用等效的:https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/ism.html