• es 数据 导出 到 MySQL


    暂时没有找到直接 导出到 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 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);
    ?> 

  • 相关阅读:
    CMDXP.CMD命令大全
    ASP.NET 页生命周期概述
    使用 ASP.NET 2.0提供的WebResource管理资源
    软件包管理 之 Fedora / Redhat 软件包管理指南
    开源代码分析研究 之 BugNet (2008年1月14日更新 第一章BugNet 简介 已完成)
    软件包管理 之 如何编译安装源码包软件
    硬件管理 之 Linux 硬件管理的基础知识
    软件包管理 之 fedorarpmdevtools 工具介绍
    软件包管理 之 Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南
    系统引导管理 之 系统引导过程及硬盘分区结构论述
  • 原文地址:https://www.cnblogs.com/zhaohuanhuan/p/9197541.html
Copyright © 2020-2023  润新知