我知道如何使用 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
我该怎么做?我正在等待任何建议。谢谢,穆罕默德。
答案 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