Wie verschiebe ich Elasticsearch-Daten von einem Server auf einen anderen?
Ich habe Server A, der Elasticsearch 1.1.1 auf einem lokalen Knoten mit mehreren Indizes ausgeführt hat . Ich möchte diese Daten auf Server B kopieren, wenn Elasticsearch 1.3.4
Bisherige Vorgehensweise
Wenn ich mir den Cluster mit dem ES-Head-Plugin anschaue, werden keine Indizes angezeigt.
Es scheint, dass die Daten nicht geladen werden. Fehlt mir etwas?
Die ausgewählte Antwort klingt etwas komplexer als sie ist. Folgendes ist das, was Sie brauchen (installieren Sie npm zuerst auf Ihrem System).
npm install -g elasticdump
elasticdump --input=http://mysrc.com:9200/my_index --output=http://mydest.com:9200/my_index --type=mapping
elasticdump --input=http://mysrc.com:9200/my_index --output=http://mydest.com:9200/my_index --type=data
Sie können den ersten elastischen Dump-Befehl für nachfolgende Kopien überspringen, wenn die Zuordnungen konstant bleiben.
Ich habe soeben eine Migration von AWS zu Qbox.io ohne Probleme gemacht.
Weitere Details unter:
https://www.npmjs.com/package/elasticdump
Hilfeseite (ab Feb 2016) zur Vollständigkeit enthalten:
elasticdump: Import and export tools for elasticsearch
Usage: elasticdump --input SOURCE --output DESTINATION [OPTIONS]
--input
Source location (required)
--input-index
Source index and type
(default: all, example: index/type)
--output
Destination location (required)
--output-index
Destination index and type
(default: all, example: index/type)
--limit
How many objects to move in bulk per operation
limit is approximate for file streams
(default: 100)
--debug
Display the elasticsearch commands being used
(default: false)
--type
What are we exporting?
(default: data, options: [data, mapping])
--delete
Delete documents one-by-one from the input as they are
moved. Will not delete the source index
(default: false)
--searchBody
Preform a partial extract based on search results
(when ES is the input,
(default: '{"query": { "match_all": {} } }'))
--sourceOnly
Output only the json contained within the document _source
Normal: {"_index":"","_type":"","_id":"", "_source":{SOURCE}}
sourceOnly: {SOURCE}
(default: false)
--all
Load/store documents from ALL indexes
(default: false)
--bulk
Leverage elasticsearch Bulk API when writing documents
(default: false)
--ignore-errors
Will continue the read/write loop on write error
(default: false)
--scrollTime
Time the nodes will hold the requested search in order.
(default: 10m)
--maxSockets
How many simultaneous HTTP requests can we process make?
(default:
5 [node <= v0.10.x] /
Infinity [node >= v0.11.x] )
--bulk-mode
The mode can be index, delete or update.
'index': Add or replace documents on the destination index.
'delete': Delete documents on destination index.
'update': Use 'doc_as_upsert' option with bulk update API to do partial update.
(default: index)
--bulk-use-output-index-name
Force use of destination index name (the actual output URL)
as destination while bulk writing to ES. Allows
leveraging Bulk API copying data inside the same
elasticsearch instance.
(default: false)
--timeout
Integer containing the number of milliseconds to wait for
a request to respond before aborting the request. Passed
directly to the request library. If used in bulk writing,
it will result in the entire batch not being written.
Mostly used when you don't care too much if you lose some
data when importing but rather have speed.
--skip
Integer containing the number of rows you wish to skip
ahead from the input transport. When importing a large
index, things can go wrong, be it connectivity, crashes,
someone forgetting to `screen`, etc. This allows you
to start the dump again from the last known line written
(as logged by the `offset` in the output). Please be
advised that since no sorting is specified when the
dump is initially created, there's no real way to
guarantee that the skipped rows have already been
written/parsed. This is more of an option for when
you want to get most data as possible in the index
without concern for losing some rows in the process,
similar to the `timeout` option.
--inputTransport
Provide a custom js file to us as the input transport
--outputTransport
Provide a custom js file to us as the output transport
--toLog
When using a custom outputTransport, should log lines
be appended to the output stream?
(default: true, except for `$`)
--help
This page
Examples:
# Copy an index from production to staging with mappings:
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
# Backup index data to a file:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index_mapping.json \
--type=mapping
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index.json \
--type=data
# Backup and index to a gzip using stdout:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=$ \
| gzip > /data/my_index.json.gz
# Backup ALL indices, then use Bulk API to populate another ES cluster:
elasticdump \
--all=true \
--input=http://production-a.es.com:9200/ \
--output=/data/production.json
elasticdump \
--bulk=true \
--input=/data/production.json \
--output=http://production-b.es.com:9200/
# Backup the results of a query to a file
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=query.json \
--searchBody '{"query":{"term":{"username": "admin"}}}'
------------------------------------------------------------------------------
Learn more @ https://github.com/taskrabbit/elasticsearch-dump`enter code here`
Verwenden Sie ElasticDump
1) yum install epel-release
2) yum install node js
3) yum installiere npm
4) npm Elasticdump installieren
5) cd Knotenmodule/Elasticdump/bin
6)
./elasticdump \
--input=http://192.168.1.1:9200/original \
--output=http://192.168.1.2:9200/newCopy \
--type=data
Sie können dazu die in Elasticsearch verfügbare Funktion snapshot/restore verwenden. Nachdem Sie einen auf einem Dateisystem basierenden Snapshot-Store eingerichtet haben, können Sie ihn zwischen Clustern verschieben und in einem anderen Cluster wiederherstellen
Ich habe auf Ubuntu versucht, Daten von ELK 2.4.3 nach ELK 5.1.1 zu verschieben
Nachfolgend die Schritte
$ Sudo apt-get update
$ Sudo apt-get install -y python-software-properties python g++ make
$ Sudo add-apt-repository ppa:chris-lea/node.js
$ Sudo apt-get update
$ Sudo apt-get install npm
$ Sudo apt-get install nodejs
$ npm install colors
$ npm install nomnom
$ npm install elasticdump
im Home-Verzeichnis goto $ cd node_modules/elasticdump/
den Befehl ausführen
Wenn Sie eine grundlegende HTTP-Authentifizierung benötigen, können Sie diese wie folgt verwenden:
--input=http://name:[email protected]:9200/my_index
Kopieren Sie einen Index aus der Produktion:
$ ./bin/elasticdump --input="http://Source:9200/Sourceindex" --output="http://username:[email protected]:9200/Destination_index" --type=data
Wenn Sie können den zweiten Server zum Cluster hinzufügen, können Sie Folgendes tun:
Dies funktioniert nur, wenn die Anzahl der Ersetzungen gleich der Anzahl der Knoten ist.
Wenn Sie lediglich Daten von einem Elasticsearch-Server auf einen anderen übertragen möchten, können Sie auch elasticsearch-document-transfer verwenden.
Schritte:
$ npm install elasticsearch-document-transfer.
config.js
config.js
hinzu.options.js
ein.$ node index.js
Wenn jemand auf dasselbe Problem stößt und versucht, von Elasticsearch <2.0 auf> 2.0 zu wechseln, müssen Sie Folgendes tun:
elasticdump --input=http://localhost:9200/$SRC_IND --output=http://$TARGET_IP:9200/$TGT_IND --type=analyzer
elasticdump --input=http://localhost:9200/$SRC_IND --output=http://$TARGET_IP:9200/$TGT_IND --type=mapping
elasticdump --input=http://localhost:9200/$SRC_IND --output=http://$TARGET_IP:9200/$TGT_IND --type=data --transform "delete doc.__source['_id']"
Ich hatte immer Erfolg damit, einfach das Indexverzeichnis/den Indexordner auf den neuen Server zu kopieren und neu zu starten. Sie finden die Index-ID, indem Sie GET /_cat/indices
ausführen, und der Ordner, der dieser ID entspricht, befindet sich in data\nodes\0\indices
(normalerweise in Ihrem Elasticsearch-Ordner, sofern Sie ihn nicht verschoben haben).