在两个 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
我知道如何使用 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
node.attr.box_type: archive