• 使用elasticdump导入导出数据


    一、安装elasticdump

    终端中输入 

    npm install elasticdump -g
    

    -g表示全局可用,直接在终端输入 elasticdump --version,出现版本信息即表示安装成功,如下

    C:UsersT470s>elasticdump --version
    6.3.3 
    

    二、常用的导入导出方法

     1、将索引中的数据导出到本地

    elasticdump  --input=http://localhost:9200/demo --output=D:/ES/date/demo.json
    

     其中,demo是索引。

     2、将本地数据导入es中

    elasticdump  --input=D:/ES/date/demo.json --output=http://localhost:9200/demo1
    

     3、将es导入另一个es

    elasticdump --input=http://ip:9200/demo --output=http://127.0.0.1:9200/demo
    

     4、含有分词的导入

    转自:https://blog.csdn.net/Wang_Ocean/article/details/90267797

    前文:公司正在运行的项目需要搭一个测试环境,需要将正式环境的ES里面存储的数据导入到该测试环境的ES服务器里面。使用本地的windows系统来实现。
    1,环境准备
    因为elaticdump 依赖于nodejs的环境,需要下载nodejs的相关依赖环境,去nodejs官网直接安装包,我下载的是msi安装程序,安装好之后会直接配置好环境变量,在cmd或者Powershell直接下载elaticdump 即可:

    npm install elasticdump
    

    2,生产环境导出到测试环境
    1)导出分词器,导出分词器的时候要特别注意,我们只能根据索引单个导入,不能全部导出,全部导出会出现索引不存在的错误:

    elasticdump --input=http://ip:9200 --output=http://127.0.0.1:9200/ --type=analyzer --all=true  

    该全部导出导入的命令会如下错误:

    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;"}
    

     

    所以后面改为按索引分别导入则可以:

    elasticdump --input=http://ip:9200/applog --output=http://127.0.0.1:9200/applog --type=analyzer
    elasticdump --input=http://ip:9200/cms_article --output=http://127.0.0.1:9200/cms_article --type=analyzer
    elasticdump --input=http://ip:9200/followup --output=http://127.0.0.1:9200/followup --type=analyzer

    坑:再倒入的时候我并不知道到底有多少个索引,如何确定索引的名称?
    这里我是直接先导出所有映射mapping到本地,然后找到索引的名称再到各导入分词:

    elasticdump --input=D:/mapping.json --output=http://127.0.0.1:9200/ --all=true --type=mapping

    疑惑:我这里的索引目前只有三个,如果是多个怎么处理?超过100?

    2)导出映射mapping
    映射mapping可以直接全部导入导出,直接命令:

    elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=mapping

    3)导出全部数据data
    每个索引下的数据可以全部一次性导入:

    elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=data

    3,总结
    1),如果不导入analyzer会怎么样?
    我试过如果只导入data和mapping,则数据会导入,mapping会发生变化,最终的结果没有分词的效果。
    2),如果不导入mapping也不会有分词的效果。
    3),顺序导入最好按照:analyzer,mapping和data这个顺序来,防止出现分词失效的结果。

  • 相关阅读:
    php 微信调用扫一扫
    JavaSE常用API
    Java中的异常处理
    Java实现多态的机制是什么?
    JavaSE(下)
    JavaSE语法(中)
    JavaSE语法
    Java面向对象
    Java零基础入门之常用工具
    Java抽象类、接口、内部类
  • 原文地址:https://www.cnblogs.com/JimShi/p/11244126.html
Copyright © 2020-2023  润新知