Перенос одного сегмента или индекса между двумя серверами Elasticsearch

Я знаю, как скопировать индекс на один сервер с помощью 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

Как я могу это сделать? Я жду любого предложения. Спасибо, Мохаммад.


person mohammad asghari    schedule 05.12.2018    source источник


Ответы (2)


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

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

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

person Val    schedule 05.12.2018

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

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

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

Затем назначьте атрибут узлам своему узлу. внутри elasticsearch.yml

node.attr.box_type: archive
person Vova Bilyachat    schedule 05.12.2018