2015-07-02 22 views
0

我使用官方elasticsearch-py庫連接到本地Elasticsearch實例(localhost,port 9200,ES版本1.6.0)。這在獨立Python腳本工作得很好,但我不能把它與谷歌的App Engine在那裏我碰到下面的錯誤工作:Elasticsearch查詢在Python中使用httplib提供「No handler for uri」

No handler found for uri [http://localhost:9200/transaction/websession/_search] and method [GET] 

一些調試後,我已經縮小問題到App Engine的使用的httplib urlfetch RPC代理。

所以基本上,我可以這樣做:

r = urllib2.urlopen('http://localhost:9200/transaction/websession/_search') 
r.read() 

但不是這樣的:

c = httplib.HTTPConnection('localhost:9200') 
c.request('GET', 'http://localhost:9200/transaction/websession/_search', None, {}) 
c.getresponse().read() 

這是Python中的錯誤嗎?或在Elasticsearch?我在這裏錯過了什麼?

回答

0

我找到了答案。問題是當前的App Engine SDK。請求創建這樣的:

c.request('GET', 'http://localhost:9200/transaction/websession/_search', None, {}) 

時,它應該僅僅是:

c.request('GET', '_search', None, {}) 

奇怪的是,網址抓取存根的latest source code version似乎是從shipped SDK很大的不同。