es 資料 匯出 到 MySQL

來源:互聯網
上載者:User

標籤:問題   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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.