Elasticsearch之导入导出

1、curl方式导出(默认支持1万条以内)

语法

curl -XPOST 'es导出地址' -H 'Content-Type: application/json' -d '查询条件' --> 导出文件名(自定义)

示例
索引:es_index
导出文件:es_index.json

curl -XPOST 'http://127.0.0.1:7001/es_index/_search?' -H 'Content-Type: application/json' -d '{"query":{"bool":{"must":[{"match":{"isDeleted":0}}]}}}' --> es_index.json

2、elasticsearch-dump工具导入导出

前提(安装ealsticdump)
方式一:需要安装node.js环境,下载ealsticdump
方式二:使用docker,下载ealsticdump

输入命令进行查看node和npm是否安装成功
node -v
npm -v

下载ealsticdump
npm install elasticdump -g
查看安装版本
elasticdump --version

导出
语法

# 导出索引Mapping数据
elasticdump 
  --input=http://es实例IP:9200/index_name/index_type 
  --output=/data/my_index_mapping.json     # 存放目录
  --type=mapping 
# 导出索引数据(全量)
elasticdump 
  --input=http://es实例IP:9200/index_name/index_type 
  --output=/data/my_index.json 
  --type=data
# 导出索引数据(指定条件)
elasticdump 
  --input=http://es实例IP:9200/index_name/index_type 
  --output=/data/my_index.json 
  --limit=10000
  --searchBody={\"query\":{\"term\":{\"username\": \"admin\"}}}
  --type=data  

导出说明:
1、index_type没有自定义可以不要
2、--type可以不要,默认就是data
3、--limit=每次批量导出数据的条数
4、-searchBody=设置查询条件(必须是转义后的json)
5、也可以全量导出所有索引的数据,如果数据过大需要大量时间,可以使用nohup命令后台执行
导入

# Mapping 数据导入至索引
elasticdump 
  --output=http://es实例IP:9200/index_name 
  --input=/home/indexdata/roll_vote_mapping.json  # 导入数据目录
  --type=mapping
# ES文档数据导入至索引
elasticdump 
  --output=http:///es实例IP:9200/index_name 
  --input=/home/indexdata/roll_vote.json 
  --type=data
# 导入大数据时
elasticdump --bulk=true --input=/path/to/data.json --output=http://localhost:9200/index_name/type_name --limit=1000

导入说明
1、--bulk=true参数只是指示elasticdump使用Bulk API进行批量导入操作
2、--limit参数设置每批次导入的文档数量,可以灵活控制导入的速度和资源消耗

备注

官网地址:elasticdump 官网

你可能感兴趣的:(#,ElasticSearch,java,es)