我試圖獲得的文件的ID與我的功能,但我得到這個錯誤:「exceptions.TypeError:列表索引必須是整數不STR」在Python與Elasticsearch
var = data['hits']['hits']['_id']
exceptions.TypeError: list indices must be integers, not str
我的小功能:
def FoundIdDocument(reference):
print "foundiddocument"
url = BuildUrl()+'_search?q=name:"'+reference.replace(' ','%20')+'"'
req = urllib2.Request(url)
out = urllib2.urlopen(req)
data = out.read()
print data
# returned data is JSON
data = json.loads(data)
# total number of results
var = data['hits']['hits']['_id']
print var
一個你認爲的東西是一本字典實際上是一個列表。它可能是'data ['hit']'。它可能是'data''hit']''hit']。它可能是'data ['hit'] ['hit'] ['_ id']'。 – hughdbrown
我找到了這個解決方案: 索引數據['hits'] ['hits']: return index ['_ id'] –
我不明白你的解決方案。循環將最多執行一次。所以當data ['hits'] ['hits']'爲空並且循環不執行或'data ['hits'] ['hits']'有一個具有鍵'_id的字典時會發生差異'。但是,在任何情況下,這都不會幫助您的數據結構之一是列表而不是字典。 – hughdbrown