Jak przenieść dane Elasticsearch z jednego serwera na inny?
Mam serwer A z uruchomionym Elasticsearch 1.1.1 na jednym węźle lokalnym z wieloma indeksami. Chciałbym skopiować te dane na serwer B, na którym działa Elasticsearch 1.3.4
Dotychczasowa procedura
- Zamknij ES na obu serwerach i
- scp wszystkie dane do odpowiedniego katalogu danych na nowym serwerze. (dane wydają się znajdować w / var / lib / flexiblesearch / na moich skrzynkach Debiana)
- Zmień uprawnienia i własność na flexiblesearch: flexiblesearch
- uruchom nowy serwer ES
Kiedy patrzę na klaster z wtyczką ES head, nie pojawiają się żadne indeksy.
Wygląda na to, że dane nie są ładowane. Czy coś mi brakuje?
elasticsearch
Jabb
źródło
źródło
Odpowiedzi:
Wybrana odpowiedź sprawia, że brzmi to nieco bardziej skomplikowane, niż jest w rzeczywistości, poniżej jest to, czego potrzebujesz (najpierw zainstaluj npm w swoim systemie).
Możesz pominąć pierwsze polecenie elastycznego zrzutu dla kolejnych kopii, jeśli mapowania pozostają stałe.
Właśnie przeprowadziłem migrację z AWS do Qbox.io z powyższym bez żadnych problemów.
Więcej szczegółów na:
https://www.npmjs.com/package/elasticdump
Strona pomocy (stan na luty 2016) dołączona dla kompletności:
źródło
Użyj ElasticDump
1) yum install epel-release
2) yum install nodejs
3) yum install npm
4) npm zainstaluj elastyczny dump
5) cd node_modules / flexibledump / bin
6)
źródło
W tym celu możesz użyć funkcji migawki / przywracania dostępnej w Elasticsearch. Po skonfigurowaniu magazynu migawek opartego na systemie plików można go przenosić między klastrami i przywracać w innym klastrze
źródło
Próbowałem na Ubuntu przenieść dane z ELK 2.4.3 do ELK 5.1.1
Oto kroki
w katalogu domowym goto
wykonać polecenie
Jeśli potrzebujesz podstawowego uwierzytelniania http, możesz go użyć w następujący sposób:
Skopiuj indeks z produkcji:
źródło
sudo apt-get install -y software-properties-common
przed add-apt-repositoryJest też taka
_reindex
opcjaZ dokumentacji:
POST _reindex { "source": { "remote": { "host": "https://REMOTE_ELASTICSEARCH_ENDPOINT:PORT", "username": "USER", "password": "PASSWORD" }, "index": "INDEX_NAME", "query": { "match_all": {} } }, "dest": { "index": "INDEX_NAME" } }
źródło
Jeśli można dodać drugi serwer do klastra, można to zrobić:
Działa to tylko wtedy, gdy liczba zastąpień jest równa liczbie węzłów.
źródło
Jeśli ktoś napotka ten sam problem, podczas próby zrzucenia z pliku flexiblesearch <2.0 do> 2.0, musisz zrobić:
źródło
Zawsze odnosiłem sukcesy po prostu kopiując katalog / folder indeksu na nowy serwer i restartując go. Identyfikator indeksu znajdziesz, wykonując,
GET /_cat/indices
a folder pasujący do tego identyfikatora znajduje siędata\nodes\0\indices
(zwykle w folderze Elasticsearch, chyba że go przeniosłeś).źródło
Możemy użyć
elasticdump
lubmultielasticdump
wykonać kopię zapasową i przywrócić ją, Możemy przenieść dane z jednego serwera / klastra na inny serwer / klaster.Proszę znaleźć szczegółową odpowiedź, której udzieliłem tutaj .
źródło
Jeśli chcesz po prostu przenieść dane z jednego serwera elastycznego wyszukiwania na inny, możesz również skorzystać z funkcji flexsearch-document-transfer .
Kroki:
$ npm install elasticsearch-document-transfer.
config.js
config.js
options.js
$ node index.js
źródło
Możesz wykonać migawkę pełnego stanu klastra (w tym wszystkich indeksów danych) i przywrócić je (za pomocą interfejsu API przywracania) w nowym klastrze lub serwerze.
źródło
Jeśli nie chcesz używać elastycznego zrzutu jak narzędzia konsoli. Możesz użyć następnego skryptu node.js.
źródło