转储Elasticsearch的所有文档

Eva*_*n P 58 elasticsearch

有没有办法创建一个转储文件,其中包含索引的所有数据及其设置和映射?

类似于mongoDB与mongodump
或在Solr中的方式,其数据文件夹被复制到备份位置.

干杯!

Eva*_*van 44

这是我们为此目的而努力的新工具https://github.com/taskrabbit/elasticsearch-dump.您可以将索引导出/导出JSON文件,或从一个群集导出到另一个群集.

  • 我试过这个。而索引数据为112Mb。导出的数据为 3 倍,json 格式约 337MB,耗时 40 分钟。不知道索引太大了,看看花费的时间是否真的实用。它与 ES 开箱即用提供的快照功能的基准是什么? (2认同)

And*_*ann 35

Elasticsearch现在开箱即用:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-snapshots.html

  • 虽然非常方便,但快照并不真正以可用的格式(json,csv等)导出数据 (37认同)
  • 真的不明白为什么这是被接受的答案,因为它与原始问题无关(它要求一种将 ES 文档转储为 json 的方法,而不是使用快照备份它们的方法)。 (11认同)

Kes*_*dhi 12

我们可以使用 elasticdump 进行备份和恢复,我们可以将数据从一个服务器/集群移动到另一个服务器/集群。

1. 使用 将一个索引数据从一个服务器/集群移动到另一个服务器/集群的命令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
Run Code Online (Sandbox Code Playgroud)

2. 使用 . 命令将所有索引数据从一个服务器/集群移动到另一个服务器/集群multielasticdump

备份

multielasticdump \
  --direction=dump \
  --match='^.*$' \
  --limit=10000 \
  --input=http://production.es.com:9200 \
  --output=/tmp 
Run Code Online (Sandbox Code Playgroud)

恢复

multielasticdump \
  --direction=load \
  --match='^.*$' \
  --limit=10000 \
  --input=/tmp \
  --output=http://staging.es.com:9200 
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 如果 --direction 是默认的转储, --input 必须是 ElasticSearch 服务器的基本位置的 URL(即http://localhost:9200)并且 --output 必须是一个目录。每个匹配的索引都会创建一个数据、映射和分析器文件。

  • 对于加载从 multi-elasticsearch 转储的文件,--direction 应设置为 load,--input 必须是 multi-elasticsearch 转储的目录,--output 必须是 Elasticsearch 服务器 URL。

  • 第二个命令将采取的备份settingsmappingstemplatedata自己作为JSON文件。

  • --limit不宜超过10000否则,它会给出一个例外。

  • 在此处获取更多详细信息。


Roh*_*ary 10

ElasticSearch本身提供了一种创建数据备份和恢复的方法.执行此操作的简单命令是:

CURL -XPUT 'localhost:9200/_snapshot/<backup_folder name>/<backupname>' -d '{
    "indices": "<index_name>",
    "ignore_unavailable": true,
    "include_global_state": false
}'
Run Code Online (Sandbox Code Playgroud)

现在,如何创建这个文件夹,如何在ElasticSearch配置中包含这个文件夹路径,以便它可用于ElasticSearch,恢复方法,这里有很好的解释.在这里看看它的实用演示冲浪.


MD *_*lam 10

对于您的情况,Elasticdump是完美的答案。
首先,您需要下载映射,然后下载索引

# 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    

Run Code Online (Sandbox Code Playgroud)

如果您想在任何服务器上转储数据,我建议您通过 docker 安装 esdump。您可以从此网站博客链接获取更多信息