Перенос одного шарда или индекса между двумя серверами Elasticsearch - PullRequest
0 голосов
/ 05 декабря 2018

Я знаю, как скопировать индекс на одном сервере с 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 голосов
/ 05 декабря 2018

Вы можете настроить маршрутизацию по атрибутам .Но тогда у вас должна быть «логическая» группа узлов

Например, у вас есть несколько архивированных индексов, вы можете переместить их на другую машину, поскольку вы знаете, что вам не нужно писать очень часто, чтобы эти машины могли бытьнемного медленнее

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

Затем присвойте атрибут узлам вашему узлу внутри elasticsearch.yml

node.attr.box_type: archive
0 голосов
/ 05 декабря 2018

Чтобы навязать один индекс для данного хоста, вы можете использовать фильтрацию выделения сегментов

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

Однако, просто отметьте, что если вы сделаете это, и у сегментов вашего индекса a1 будут репликиреплики не будут назначены никаким хостам, а ваш кластер будет желтым.

...