暂时没有找到直接 导出到 mysql 数据库的工具 或者项目
目前实现思路: 使用 elasticdump 工具 实现 从 es 数据 导出到 json 文件 ,然后 使用 脚本程序 操作 改 json 文件 实现 导入到MySQL 数据
具体内容如下:
安装elasticdump
1 npm install elasticdump -g elasticdump 全局安装 2 从 github 下载 对应的版本 比如 2.4.* 具体参考 https://www.npmjs.com/package/elasticdump github 地址 https://github.com/taskrabbit/elasticsearch-dump 安装完成后,就可以使用了,下面举一个例子(将索引a中的数据导入到索引b中):elasticdump 用法详解./elasticdump --input=http://127.0.0.1:9200/domain6 --output=query.json --debug=true --limit=1 --offset=0 --searchBody='{"query":{"range":{"id":{"lte":"100"}}}}' --sourceOnly=true// 获取 所需的字段值
./elasticdump --input=http://127.0.0.1:9200/domain6 --output=query2.json --limit=100 --offset=0 --searchBody='{"query":{"range":{"id":{"lte":"80"}}},"_source":["id","cname"]}' --sourceOnly=true//问题 类似 es size 的功能 暂时还没找到方案 ./elasticdump --input=http://127.0.0.1:9200/domain6 --output=query3.json --limit=100 --offset=0 --searchBody='{"query":{"range":{"id":{"lte":"80"}}},"_source":["id","cname"]}' --sourceOnly=true--input 原数据源--output 导出数据地址--limit (不是导出总条数 和 es 有区别) 每次执行 导入的数据条数--offset 相当于 es 里面 的from--searchBody 查询语句--sourceOnly 导出数据格式 默认会把 _type _id _source _index 都导出 默认 falseelasticdump --input=http://localhost:9200/a --output=http://localhost:9200/b --type=dataelasticdump --input=http://localhost:9200/domain_v12 --output=D:/ziliao/elasticsearch-2.3.3/dd --type=dataelasticdump --input=http://localhost:9200/domain_v12 --limit=10 --output=D:/ziliao/elasticsearch-2.3.3/dd4.json --type=data执行数据迁移导出Mapping信息elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.10.20.164:9200/xmonitor-2015.04.29 --output=http://192.168.100.72:9200/xmonitor-prd-2015.04.29 --type=mapping导出数据elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.10.20.164:9200/xmonitor-2015.04.28 --output=/usr/local/esdump/node-v0.12.2-linux-x64/data/xmonitor-prd-2015.04.28.json --type=data导出数据到本地集群elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.10.20.164:9200/xmonitor-2015.04.29 --output=http://192.168.100.72:9200/xmonitor-prd-2015.04.29 --type=datavar defaults = { limit: 10, offset: 0, debug: false, type: 'data', delete: false, maxSockets: null, input: null, 'input-index': null, output: null, 'output-index': null, inputTransport: null, outputTransport: null, searchBody: null, sourceOnly: false, jsonLines: false, format: '', 'ignore-errors': false, scrollTime: '10m', timeout: null, toLog: null, quiet: false, awsAccessKeyId: null, awsSecretAccessKey: null,};npm install elasticdump2.1.0 -gelasticdumpnpm install elasticdump@2.*从json文件 导入 MySQL<?php $json_data = file_get_contents('D:/ziliao/node_modules/elasticdump/bin/query1223.json');(json 文件 所有路径)$len = strlen($json_data);$begin = 0;$end = 0;$data = [];for ($i=0; $i < $len; $i++) { if($json_data[$i]=="}") { $end = $i; $lens = $end-$begin+1; $data[] = json_decode(substr($json_data,$begin ,$lens),true); $begin = $end+1; }}// print_r($data);// 链接 MySQL 数据库 配置 $con = mysql_connect("localhost","root","");if (!$con){ die('Could not connect: ' . mysql_error());}mysql_select_db("adbug", $con);foreach ($data as $key => $value) { $sql = "INSERT INTO test2 (name) VALUES ('".$value['host']."')"; mysql_query($sql);}mysql_close($con);?>