Elasticsearch — Копировать содержимое одного домена в другой

 

Для того, чтобы скопировать все индексы с одного домена в другой воспользуемся утилитой elasticdump

Для утилиты elasticdump нужнен npm, если их нет, то устанавливаем nodejs и npm:

yum install -y gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash -
yum install nodejs

 

Устанавливаем elasticdump:

npm install elasticdump -g

 

Создадим скрипт, предварительно указав в переменных old_instance и new_instance URL своих ES доменов.

cat <<EOF >elastic_dump.sh
#!/bin/bash

old_instance="https://vpc-artem-old.eu-central-1.es.amazonaws.com"
new_instance="https://vpc-artem-new.eu-central-1.es.amazonaws.com"

es_indexes=$(curl -s "${old_instance}/_cat/indices" | awk '{ print $3 }')

for index in $es_indexes; do
  elasticdump \
    --input="${old_instance}/${index}" \
    --output="${new_instance}/${index}" \
    --type=mapping

  elasticdump \
    --input="${old_instance}/${index}" \
    --output="${new_instance}/${index}" \
    --type=data
done
EOF

 

Делаем скрипт исполняемым и запускаем:

chmod +x elastic_dump.sh
./elastic_dump.sh

Если в качестве Elasticsearch у вас сервис AWS, то не должно быть авторизации в Elasticsearch на момент миграции, для этого можно разрешить доступ основываясь на SecurityGroup и VPC:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:eu-central-1:XXXXXXXXXXXX:domain/artem-old/*"
    }
  ]
}

 

eu-central-1 — регион AWS
XXXXXXXXXXXX — ID укаунта AWS
artem-old — имя Elasticsearch домена

0 0 vote
Рейтинг статьи

Метки: Метки

Подписаться
Уведомление о
guest
0 комментариев
Inline Feedbacks
View all comments