在ElasticSearch上使用pycurl进行双重请求

时间:2014-07-10 19:13:01

标签: python mysql elasticsearch

我决定编写一个使用mysql和ElasticSearch的简短python程序。 当我的rowcount返回更多结果时,我的ElasticSearch的seconde查询不起作用。 这是我的代码:

#!/usr/bin/python
c = pycurl.Curl()
b = StringIO.StringIO()


def BuildUrl():
    return "http://"+ip_ES+":"+port_ES+"/"+index_ES+"/"+type_ES+"/"
def CreateRqtES(brand, count):
    request = BuildUrl()+'_search?sort=title:asc&from=0&size='+str(count)+'&q=brand:'+brand
    print("link:", request)
    try:
        c.setopt(c.URL, request)
        c.setopt(pycurl.WRITEFUNCTION, b.write)
        c.perform()
        print "test" 
        try:
            decoded = json.loads(b.getvalue())
            json.dumps(decoded, sort_keys=True, indent=4)
            for index in decoded['hits']['hits']:
                var =  index['_source']['link']
                print var
        except (ValueError, KeyError, TypeError):
            print "JSON format error"
        except IOError as e:
            print "I/O error({0}): {1}".format(e.errno, e.strerror)
    except Exception, e:
        logger.info("[-][Error] pycurl")

def connectionBDD():
    try:
        con = mdb.connect('localhost', 'root', 'root', 'mydbb')
        with con:
            cur = con.cursor()
            cur.execute("SELECT * FROM  newsletters")
            for i in range(cur.rowcount):
                row = cur.fetchone()
                print row[1], row[2]
                CreateRqtES(row[1], row[2])

    except _mysql.Error, e:
        print "Error %d: %s" % (e.args[0], e.args[1])
        sys.exit(1)
    finally:
        if con:
            con.close()

在Es的第二次请求中没有结果。 如何解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我改进了错误消息,现在我的seconde请求出现了这个错误:

  

额外数据:第1行第5499行 - 第1行第10973行(字符5499 - 10973)

但是当我第一次提出第二次请求时,我没有错误......