elasticdump 简介
elasticdump是一个能够将es的数据快速导入、导出、迁移的工具。
1.elasticdump导入ES数据到本地json文件
elasticdump --input=http://elastic:elastic@ip:9200/a_ems_xqd_11/xqd --output=D:/xqd.json
2、将本地数据导入es中
elasticdump --input=D:/ES/date/demo.json --output=http://localhost:9200/demo1
如果报错信息如下:
Wed, 07 Jun 2023 01:39:16 GMT | dump ended with error (get phase) => UNAUTHORIZED: {“error”:{“root_cause”:[{“type”:“security_exception”,“reason”:“missing authentication token for REST request [/]”,“header”:{“WWW-Authenticate”:"Basic realm=“security” charset=“UTF-8"”}}],“type”:“security_exception”,“reason”:“missing authentication token for REST request [/]”,“header”:{“WWW-Authenticate”:"Basic realm=“security” charset=“UTF-8"”}},“status”:401}
那么表示无权限访问或未授权访问目标Elasticsearch集群,需要加上用户名和密码
命令如下:
elasticdump --input=D:/ryxx.json --output=http://username:password@IP:9200/my_index --type=data
有些人用
elasticdump --input=D:/ryxx.json --output=http://IP:9200/my_index --username=username --password=password --type=data
这个是不对的,这个会报错
3、将es导入另一个es
elasticdump --input=http://ip:9200/demo --output=http://127.0.0.1:9200/demo
4 .其他参数
elasticdump \ --input=http://elastic:password@host:port/index_aaa \ --output=http://elastic:password@host:port/index_bbb \ --type=data --limit 1000 --support-big-int
通过指定--limit 1000
,设置每批次同步文档数量。
注:通过指定--support-big-int
参数,解决long类型字段丢失精度问题。
根据条件进行查询 到的数据进行迁移,
现在kibana中查询好,然后复制查询语句,将语句进行压缩转义然后执行即可
查询语句json要先进行压缩转义
使用–searchBody
elasticdump --input=http://elastic:elastic@ip:9200/a_ems_xqd_11/xqd --output=D:/xqd.json --searchBody {\"query\":{\"bool\":{\"must\":[{\"range\":{\"JD\":{\"from\":116.388474,\"to\":116.67818,\"include_lower\":true,\"include_upper\":true,\"boost\":1.0}}},{\"range\":{\"WD\":{\"from\":39.621549,\"to\":39.839061,\"include_lower\":true,\"include_upper\":true,\"boost\":1.0}}}],\"must_not\":[{\"term\":{\"JLZT\":{\"value\":\"0\",\"boost\":1.0}}}],\"disable_coord\":false,\"adjust_pure_negative\":true,\"boost\":1.0}}} --limit 10000
elasticdump --input=http://elastic:elastic@ip:9200/a_ems_xtzd/xtzd --output=D:/xtzd.json --searchBody {\"query\":{\"bool\":{\"must\":[{\"term\":{\"ZDLX\":{\"value\":\"ZQXX_ZQLX\",\"boost\":1.0}}},{\"prefix\":{\"BZXX\":{\"value\":\"A01\"}}}]}}}
使用–searchBody 向本机ES导数据
elasticdump --input=http://elastic:elastic@ip:9200/a_ems_xqd_11/xqd --output=http://localhost:9200/a_ems_xqd_11/xqd --searchBody {\"query\":{\"bool\":{\"must\":[{\"range\":{\"JD\":{\"from\":116.388474,\"to\":116.67818,\"include_lower\":true,\"include_upper\":true,\"boost\":1.0}}},{\"range\":{\"WD\":{\"from\":39.621549,\"to\":39.839061,\"include_lower\":true,\"include_upper\":true,\"boost\":1.0}}}],\"must_not\":[{\"term\":{\"JLZT\":{\"value\":\"0\",\"boost\":1.0}}}],\"disable_coord\":false,\"adjust_pure_negative\":true,\"boost\":1.0}}} --limit 10000
使用–type=analyzer导出分析器
elasticdump --input=http://elastic:elastic@ip:9200/a_ems_xqd_11/xqd --output=D:/xqd.json --type=analyzer
结语
🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。
🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.
🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,