zoukankan      html  css  js  c++  java
  • Elasticsearch的脚本化数据导入导出

    我用的ES的版本是2.4.1,由于没有相应的命令实现数据的导入和导出,就是像mysql的那种mysqldump类似的指令。

    更苦逼的是,我们的生产和测试环境,还不能联网,连ES的第三方的插件都没有办法安装。。。

    处于这种苦逼的境地,我只能通过脚本的方式实现数据的导入和导出了。

    导出脚本,可以用我前面说的elasticdump,也可以用脚本实现。通常在自己的开发环境下可以搞定elasticdump的安装,但是测试环境或者生产环境,往往不会有这个条件,尤其在我当前所在的断网式网络安全策略下。

    导入脚本,用python实现:

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import json
    import urllib
    import httplib
    
    fp = open('weibao_es.json')
    cnt=0
    try:
        #line = fp.readline()
        lines = fp.readlines()             # 调用文件的 readlines()方法
        conn = httplib.HTTPConnection("10.130.12.86",9200)
        print type(lines)
        for i in range(len(lines)):
            rawd = json.loads(lines[i])
            src = rawd["_source"]
            uid = rawd["_id"]
            params = json.dumps(src)
            conn.request("POST","/robotkdb/weibao/"+uid, params)
            resp = conn.getresponse()
            print "i: %d, %s" % (i,resp.read().strip())
    finally:
         fp.close()

    效果能满足要求,有点笨,搞技术的人,各种招都能想到。。。

  • 相关阅读:
    [Python]爬虫v0.1
    [Python]同是新手的我,分享一些经验
    [python]闭包到底是什么鬼?
    测试Flask应用_学习笔记
    Flask模板_学习笔记
    SQL Server Alwayson概念总结
    JDBC数据库编程:ResultSet接口
    JDBC操作,执行数据库更新操作
    接口怎么实例化?
    java数据库编程:JDBC操作及数据库
  • 原文地址:https://www.cnblogs.com/shihuc/p/7663635.html
Copyright © 2011-2022 走看看