需求:有一些服务日志需要永久保留
# 获取集群的节点列表:
curl 'localhost:9200/_cat/nodes?v'
# 列出所有索引:
curl 'localhost:9200/_cat/indices?v'
# 获取集群的节点列表:
curl --user username:password 'localhost:9200/_cat/nodes?v'
github地址: https://github.com/elasticsearch-dump/elasticsearch-dump
官方demo
docker hub: https://hub.docker.com/r/elasticdump/elasticsearch-dump
# Copy an index from production to staging with mappings:
docker run --rm -ti elasticdump/elasticsearch-dump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=mapping
docker run --rm -ti elasticdump/elasticsearch-dump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=data
# Backup index data to a file:
docker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \
--input=http://production.es.com:9200/my_index \
--output=/tmp/my_index_mapping.json \
测试备份一个fluentd日志到本地
docker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \
--input=http://10.80.111.215:9200/fluentd-20200609 \
--output=/tmp/my_index_mapping.json \
--type=data
# 备份索引数据到文件里:
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
# 备份到标准输出,且进行压缩(这里有一个需要注意的地方,我查询索引信息有6.4G,用下面的方式备份后得到一个789M的压缩文件,这个压缩文件解压后有19G):
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=$ \
| gzip > /data/my_index.json.gz
# 把一个查询结果备份到文件中
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=query.json \
--searchBody '{"query":{"term":{"username": "admin"}}}'
网友评论