elasticsearch-dump 迁移es数据 (elasticdump)

 

elasticsearch 部分查询语句node

# 获取集群的节点列表: curl 'localhost:9200/_cat/nodes?v' # 列出全部索引: curl 'localhost:9200/_cat/indices?v' 建立一个名为“customer”的索引,而后再查看全部的索引: curl -X PUT 'localhost:9200/customer?pretty' curl 'localhost:9200/_cat/indices?v'

若是须要用户名和密码登陆才能够访问,经过下面的方式指定用户名和密码
# 获取集群的节点列表: curl --user username:password 'localhost:9200/_cat/nodes?v'
 

参考连接: https://blog.csdn.net/pilihaotian/article/details/52452014linux

 

 

 

github地址 :https://github.com/taskrabbit/elasticsearch-dumpgit

或者 : https://www.npmjs.com/package/elasticdumpgithub

 

wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz

tar xf node-v8.11.2-linux-x64.tar.xz mv node-v8.11.2-linux-x64 /usr/local ln -s /usr/local/node-v8.11.2-linux-x64/bin/npm /usr/local/bin/npm ln -s /usr/local/node-v8.11.2-linux-x64/bin/node /usr/local/bin/node npm init -f npm install elasticdump #由于我只用一次,因此这里没有安装到全局,须要到node_modules目录下才能找到 elasticdump , 我安装的位置以下: /usr/local/node-v8.11.2-linux-x64/node_modules/elasticdump/bin/elasticfump

 

 

数据迁移: npm

'#拷贝analyzer分词
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

 

# 注意 elasticdump 提供给了--httpAuthFile 参数来作认证 --httpAuthFile      When using http auth provide credentials in ini file in form `user=<username> password=<password>` # 只须要写一个ini文件 ,文件中写入用户名和密码就能够了
# 这里其实还有另一个好的方法
# 在--input参数和--output参数的的url中添加帐号密码
# 例如
elasticdump \ --input=http://prod-username:prod-passowrd@production.es.com:9200/my_index \ --output=http://stage-username:stage-password@staging.es.com:9200/my_index \ --type=data
 

 

 

若是网络状况很差,或者没有网络还能够先备份到文件:json

# 备份索引数据到文件里: 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"}}}'

 

elasticdump仍是很是方便的,主要是能够指定查询条件,把查询结果进行备份。若是按照日期进行查询,那么就能够迁移指定之间段内的数据,

恢复数据
# 将备份文件的数据导入ES elasticdump \ --input=./data.json \ --output=http://es.com:9200 

 

其实对ES了解还不多,中间可能有问题,还须要学习,就目前的了解程度,不保证上面的步骤完整,只是给你们一个大概的思路。网络