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()

 

效果能滿足要求,有點笨,搞技術的人,各種招都能想到。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM