在两个 Elasticsearch 服务器之间传输一个分片或索引

Transfer one shard or index between two Elasticsearch server

我知道如何使用 Reindex API 在一台服务器中复制索引,但现在在两个独立的主机上有两个服务器(Elastic A 和 Elastic B),如下所示:

Elastic A 
 |_ index a1
 |_ index a2

Elastic B 
 |_ index b1
 |_ index b2

我需要将a1复制到Elastic B,最后是这样的:

 Elastic B 
 |_ index b1
 |_ index b2
 |_ index a1

我该怎么做?我在等待任何建议。谢谢,穆罕默德。

为了在给定主机上强制使用一个索引,您可以使用 shard allocation filtering

PUT a1/_settings
{
  "index.routing.allocation.require._host": "ElasticB"
}

但是,请注意,如果您这样做并且您的索引 a1 的分片有副本,副本将不会分配给任何主机,您的集群将为黄色。

您可以配置routing per attributes。但是你应该有"logical"组节点

例如,你有一些存档的索引,你可以将它们移动到其他机器上,因为你知道你不必经常写,所以那些机器可能会慢一点

PUT a1/_settings
{
  "routing.allocation.include.box_type": "archive",
}

然后将属性分配给 elasticsearch.yml

内的节点 to your node
node.attr.box_type: archive