Dump alle documenten van Elasticsearch

Is er een manier om een ​​dumpbestand te maken dat alle gegevens van een index bevat, inclusief de instellingen en toewijzingen?

Een vergelijkbare manier als mongoDB doet met mongodump
of zoals in Solr de gegevensmap wordt gekopieerdnaar een back-uplocatie.

Proost!


Antwoord 1, autoriteit 100%

Hier is een nieuwe tool waaraan we hebben gewerkt voor precies dit doel https://github.com/taskrabbit/elasticsearch-dump . U kunt indices exporteren naar/uit JSON-bestanden of van het ene cluster naar het andere.


Antwoord 2, autoriteit 52%

Elasticsearch ondersteunt standaard een snapshot-functie:

https://www.elastic.co /guide/nl/elasticsearch/referentie/current/modules-snapshots.html


Antwoord 3, autoriteit 23%

Voor uw geval is Elasticdumphet perfecte antwoord.

Eerst moet je de mapping downloaden en dan de index

# Install the elasticdump 
npm install elasticdump -g
# Dump the mapping 
elasticdump --input=http://<your_es_server_ip>:9200/index --output=es_mapping.json --type=mapping
# Dump the data
elasticdump --input=http://<your_es_server_ip>:9200/index --output=es_index.json --type=data    

Als je de gegevens op een server wilt dumpen, raad ik je aan om esdump te installeren via docker. U kunt meer informatie krijgen van deze website Bloglink


Antwoord 4, autoriteit 21%

We kunnen elasticdump gebruiken om de back-up te maken en deze te herstellen. We kunnen gegevens van de ene server/cluster naar een andere server/cluster verplaatsen.

1. Commando’s om indexgegevens van de ene server/cluster naar de andere te verplaatsen met behulp van elasticdump.

# Copy an index from production to staging with analyzer and mapping:
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=analyzer
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=mapping
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=data

2. Commando’s om alle indexgegevens van de ene server/cluster naar de andere te verplaatsen met behulp van multielasticdump.

Back-up

multielasticdump \
  --direction=dump \
  --match='^.*$' \
  --limit=10000 \
  --input=http://production.es.com:9200 \
  --output=/tmp 

Herstellen

multielasticdump \
  --direction=load \
  --match='^.*$' \
  --limit=10000 \
  --input=/tmp \
  --output=http://staging.es.com:9200 

Opmerking:

  • Als –direction dump is, wat de standaard is, MOET –input een URL zijn voor de basislocatie van een ElasticSearch-server (dwz http://localhost:9200) en –output MOETEN een directory zijn. Voor elke index die wel overeenkomt, wordt een gegevens-, kaart- en analysebestand gemaakt.

  • Voor het laden van bestanden die je hebt gedumpt vanuit multi-elasticsearch, moet –direction worden ingesteld om te laden, –input MOET een map zijn van een multielasticsearch-dump en –output MOET een Elasticsearch-server-URL zijn.

  • Het 2e commando maakt een back-up van settings, mappings, templateen datazelf als JSON-bestanden.

  • De --limitmag niet meer zijn dan 10000anders geeft het een uitzondering.

  • Meer details hier.

Antwoord 5, autoriteit 18%

ElasticSearch biedt zelf een manier om back-up en herstel van gegevens te maken. De eenvoudige opdracht om dit te doen is:

CURL -XPUT 'localhost:9200/_snapshot/<backup_folder name>/<backupname>' -d '{
    "indices": "<index_name>",
    "ignore_unavailable": true,
    "include_global_state": false
}'

Hoe u deze map maakt, hoe u dit mappad in de ElasticSearch-configuratie opneemt, zodat het beschikbaar is voor ElasticSearch, herstelmethode, wordt goed uitgelegd hier. Om de praktische demo te zien, surf hier.


Antwoord 6, autoriteit 3%

De gegevens zelf zijn een of meer lucene-indexen, aangezien u meerdere shards kunt hebben. Waar je ook een back-up van moet maken, is de clusterstatus, die allerlei informatie bevat over het cluster, de beschikbare indices, hun toewijzingen, de shards waaruit ze zijn samengesteld, enz.

Het staat echter allemaal in de datadirectory, je kunt het gewoon kopiëren. De structuur is vrij intuïtief. Vlak voor het kopiëren is het beter om automatisch opschonen uit te schakelen (om een ​​back-up te maken van een consistent beeld van de index en om schrijfacties erop te vermijden tijdens het kopiëren van bestanden), een handmatige uitspoeling uit te voeren en ook toewijzing uit te schakelen. Vergeet niet om de map van alle knooppunten te kopiëren.

Bovendien zal de volgende grote versie van elasticsearch een nieuwe snapshot/restore-api bieden waarmee u incrementele snapshots kunt maken en deze ook via api kunt herstellen. Hier is het gerelateerde github-probleem: https://github.com/elasticsearch/elasticsearch/issues/3826.


Antwoord 7, autoriteit 2%

Op het moment van schrijven van dit antwoord (2021), is de officiële manier om een ​​back-up te maken van een ElasticSearch-cluster door er een momentopname van te maken. Raadpleeg: https://www.elastic.co /guide/en/elasticsearch/reference/current/snapshot-restore.html


Antwoord 8, autoriteit 2%

U kunt elasticsearch-gegevens ook dumpen in JSON-indeling via http-verzoek:
https://www.elastic.co/ guide/en/elasticsearch/reference/current/search-request-scroll.html
CURL -XPOST 'https://ES/INDEX/_search?scroll=10m'
CURL -XPOST 'https://ES/_search/scroll' -d '{"scroll": "10m", "scroll_id": "ID"}'


Antwoord 9, autoriteit 2%

Om alle documenten van ElasticSearch naar JSON te exporteren, kunt u de tool esbackupexporter gebruiken. Het werkt met index-snapshots. Het neemt de container met snapshots (S3, Azure blob of bestandsmap) als invoer en voert een of meerdere gecomprimeerde JSON-bestanden per index per dag uit. Het is best handig bij het exporteren van uw historische snapshots. Om uw hot index-gegevens te exporteren, moet u mogelijk eerst de momentopname maken (zie de antwoorden hierboven).


Antwoord 10

Als u de gegevens wilt masseren op weg naar Elasticsearch, kunt u Logstash gebruiken. Het heeft een handige Elasticsearch Input Plugin.

En dan kun je naar alles exporteren, van een CSV-bestand tot het opnieuw indexeren van de gegevens op een ander Elasticsearch-cluster. Maar voor dat laatste heb je ook de Elasticsearch’s eigen Reindex.

Other episodes