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

时间:2018-12-05 06:03:38

标签: elasticsearch reindex

我知道如何使用 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

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

2 个答案:

答案 0 :(得分:3)

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

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

但是,请注意,如果执行此操作,并且索引a1的分片具有副本,则副本将不会分配给任何主机,并且群集将变为黄色。

答案 1 :(得分:1)

您可以配置routing per attributes。但是然后您应该具有“逻辑”节点组

例如,您有一些已存档的索引,可以将它们移至另一台计算机,因为您知道不必经常编写,因此这些计算机可能会变慢

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

然后将属性分配给elasticsearch.yml内的节点to your node

node.attr.box_type: archive