標籤:問題 transport http 索引 file mysql 資料庫 叢集 程式 /usr
暫時沒有找到直接 匯出到 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 都匯出 預設 false
elasticdump --input=http://localhost:9200/a --output=http://localhost:9200/b --type=data
elasticdump --input=http://localhost:9200/domain_v12 --output=D:/ziliao/elasticsearch-2.3.3/dd --type=data
elasticdump --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=data
var 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 -g
elasticdump
npm install [email protected]*
從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);
?>
es 資料 匯出 到 MySQL