建设银行网站多少,wordpress访问权限插件,企业起名大全,长沙电商优化使用elasticdump导入导出数据
一、安装elasticdump 终端中输入 1 npm install elasticdump -g -g表示全局可用#xff0c;直接在终端输入 elasticdump --version#xff0c;出现版本信息即表示安装成功#xff0c;如下 1 2 C:\Users\T470selasticdump --version 6.3.3 …使用elasticdump导入导出数据
一、安装elasticdump 终端中输入 1 npm install elasticdump -g -g表示全局可用直接在终端输入 elasticdump --version出现版本信息即表示安装成功如下 1 2 C:\Users\T470selasticdump --version 6.3.3
二、常用的导入导出方法 1、将索引中的数据导出到本地 1 elasticdump --inputhttp://localhost:9200/demo --outputD:/ES/date/demo.json 其中demo是索引。 2、将本地数据导入es中 1 elasticdump --inputD:/ES/date/demo.json --outputhttp://localhost:9200/demo1 3、将es导入另一个es 1 elasticdump --inputhttp://ip:9200/demo --outputhttp://127.0.0.1:9200/demo 4、含有分词的导入 前文公司正在运行的项目需要搭一个测试环境需要将正式环境的ES里面存储的数据导入到该测试环境的ES服务器里面。使用本地的windows系统来实现。 1环境准备 因为elaticdump 依赖于nodejs的环境需要下载nodejs的相关依赖环境去nodejs官网直接安装包我下载的是msi安装程序安装好之后会直接配置好环境变量在cmd或者Powershell直接下载elaticdump 即可 1 npm install elasticdump
2生产环境导出到测试环境 1导出分词器导出分词器的时候要特别注意我们只能根据索引单个导入不能全部导出全部导出会出现索引不存在的错误 1 elasticdump --inputhttp://ip:9200 --outputhttp://127.0.0.1:9200/ --typeanalyzer --alltrue 该全部导出导入的命令会如下错误 1 Error Emitted {“root_cause”:[{“type”:“action_request_validation_exception”,“reason”:“Validation Failed: 1: index is missing;”}],“type”:“action_request_validation_exception”,“reason”:“Validation Failed: 1: index is missing;”} 所以后面改为按索引分别导入则可以 1 2 3 elasticdump --inputhttp://ip:9200/applog --outputhttp://127.0.0.1:9200/applog --typeanalyzer elasticdump --inputhttp://ip:9200/cms_article --outputhttp://127.0.0.1:9200/cms_article --typeanalyzer elasticdump --inputhttp://ip:9200/followup --outputhttp://127.0.0.1:9200/followup --typeanalyzer 坑再倒入的时候我并不知道到底有多少个索引如何确定索引的名称 这里我是直接先导出所有映射mapping到本地然后找到索引的名称再到各导入分词 1 elasticdump --inputD:/mapping.json --outputhttp://127.0.0.1:9200/ --alltrue --typemapping 疑惑我这里的索引目前只有三个如果是多个怎么处理超过100? 2)导出映射mapping 映射mapping可以直接全部导入导出,直接命令 1 elasticdump --inputhttp://ip:9200/ --outputhttp://127.0.0.1:9200/ --alltrue --typemapping 3导出全部数据data 每个索引下的数据可以全部一次性导入 1 elasticdump --inputhttp://ip:9200/ --outputhttp://127.0.0.1:9200/ --alltrue --typedata 3,总结 1如果不导入analyzer会怎么样 我试过如果只导入data和mapping则数据会导入mapping会发生变化最终的结果没有分词的效果。 2如果不导入mapping也不会有分词的效果。 3顺序导入最好按照analyzermapping和data这个顺序来防止出现分词失效的结果。
顺序导入按照analyzermappingdata
es数据的导出
//索引的导出
// 导出 index 的 mapping 到 .json 文件
elasticdump \--inputhttp://production.es.com:9200/demo \--output/data/demo.json \--typemapping//导出全部索引
elasticdump --inputhttp://ip:9200/ --outputhttp://127.0.0.1:9200/ --alltrue --typemapping//数据的导出
// 导出 index 的所有数据到 .json 文件
elasticdump \--inputhttp://production.es.com:9200/demo \--output/data/demo.json \--typedata//导出全部数据
elasticdump --inputhttp://ip:9200/ --outputhttp://127.0.0.1:9200/ --alltrue --typedata//分词器导出
//导出分词器导出分词器的时候要特别注意我们只能根据索引单个导入不能全部导出全部导出会出现索引不存在的错误 //改为按索引分别导入
elasticdump --inputhttp://ip:9200/applog --outputhttp://127.0.0.1:9200/applog --typeanalyzer
elasticdump --inputhttp://ip:9200/cms_article --outputhttp://127.0.0.1:9200/cms_article --typeanalyzer
elasticdump --inputhttp://ip:9200/followup --outputhttp://127.0.0.1:9200/followup --typeanalyzeres数据的导入 从本地文件导入数据
elasticdump --input/data/demo.json --outputhttp://localhost:9200/demo1
将es导入另一个es
elasticdump --inputhttp://ip:9200/demo --outputhttp://127.0.0.1:9200/demo#!/usr/bin/env bash
array(“full_vehicle_portrait” “latest_car_history_trail_dt” “vehicle_abnormal_monitor” “gantry_transaction-20200914” “vehicle_abnormal_summary”) for(( i0;iKaTeX parse error: Expected }, got # at position 2: {#̲array[]};i))…{array[i]} #创建索引 curl -X PUT ‘http://cdh173:9200/$VAR1?pretty’
elasticdump –inputhttp://33.69.6.95:9200/array[i]−−outputhttp://cdh219:9200/{array[i]} \ --outputhttp://cdh219:9200/array[i] −−outputhttp://cdh219:9200/{array[i]} –typeanalyzer elasticdump –inputhttp://33.69.6.95:9200/array[i]−−outputhttp://cdh219:9200/{array[i]} \ --outputhttp://cdh219:9200/array[i] −−outputhttp://cdh219:9200/{array[i]} –typesettings elasticdump –inputhttp://33.69.6.95:9200/array[i]−−outputhttp://cdh219:9200/{array[i]} \ --outputhttp://cdh219:9200/array[i] −−outputhttp://cdh219:9200/{array[i]} –typemappingcc
elasticdump --size200 –inputhttp://33.69.6.95:9200/array[i]−−outputhttp://cdh219:9200/{array[i]} \ --outputhttp://cdh219:9200/array[i] −−outputhttp://cdh219:9200/{array[i]} –typedata done
如果我es里索引非常多这样一个一个去执行依然会耗时怎么做当然想到了shell脚本。 脚本名字为esExportOrInput.sh #!/bin/sh index_name$1 index_data$1_data index_settings$1_settings echo “开始执行”
导出索引Mapping数据
./elasticdump --inputhttp://source:9200/indexname/−−output./index_name/ --output./indexname/−−output./index_name.json --typemapping ./elasticdump --inputhttp://source:9200/indexname/−−output./index_name/ --output./indexname/−−output./index_settings.json --typesettings
导出索引数据
./elasticdump --inputhttp://source:9200/indexname/−−output./index_name/ --output./indexname/−−output./index_data.json --typedata --limit1000
#导入索引Mapping数据 echo 执行删除目标服务的索引startindexnamecurl−XDELETEhttp://target:9200/index_name curl -XDELETE http://target:9200/indexnamecurl−XDELETEhttp://target:9200/index_name echo 执行删除目标服务的索引end“indexnamesleep3echo等待三秒。。。./elasticdump−−input./index_name sleep 3 echo 等待三秒。。。 ./elasticdump --input./indexnamesleep3echo等待三秒。。。./elasticdump−−input./index_settings.json --outputhttp://target:9200/indexname/−−typesettings./elasticdump−−input./index_name/ --typesettings ./elasticdump --input./indexname/−−typesettings./elasticdump−−input./index_name.json --outputhttp://target:9200/indexname/−−typemapping./elasticdump−−input./index_name/ --typemapping ./elasticdump --input./indexname/−−typemapping./elasticdump−−input./index_data.json --outputhttp://target:9200/KaTeX parse error: Expected EOF, got # at position 39: …a --limit1000 #̲清除生成的文件 rm -f .…index_name.json rm -f ./indexsettings.jsonrm−f./index_settings.json rm -f ./indexsettings.jsonrm−f./index_data.json #清除生成的文件 echo “索引”$index_name执行完毕”
执行时候需要传递1个变量就是索引名字index_name
温馨提示 1、这个脚本仅仅只能在安装了elasticdump服务器上使用脚本目录在/root/node_modules/elasticdump/bin 2、导出导入默认100条一批可以添加–limit 每页条数 来自定义每页数量。 3、导入的时候一定要限制性settings的文件导入在执行mapping的导入不然会冲突因为settings上带了uuid的唯一标识。 样例如果我要对bum_user这个索引的数据从测试环境迁移到压测服务器target上就这样执行命令 ./esExportOrInput.sh bum_user
留个作业可以对源服务器和目标服务器进行动态参数传递就可以做到万能适配了有兴趣就重写