Я использую elasticsearch-py для подключения к моей базе данных ES, содержащей более 3 миллионов документов. Я хочу вернуть все документы, чтобы я мог абстрагировать данные и записать их в csv. Я смог легко выполнить это для 10 документов (возврат по умолчанию), используя следующий код.
es=Elasticsearch("glycerin")
query={"query" : {"match_all" : {}}}
response= es.search(index="_all", doc_type="patent", body=query)
for hit in response["hits"]["hits"]:
print hit
К сожалению, когда я попытался выполнить проверку и прокрутку, чтобы я мог получить все документы, на которые я столкнулся с проблемами. Я пробовал это двумя разными способами без успеха.
Способ 1:
scanResp= es.search(index="_all", doc_type="patent", body=query, search_type="scan", scroll="10m")
scrollId= scanResp['_scroll_id']
response= es.scroll(scroll_id=scrollId, scroll= "10m")
print response
После scroll/
он выдает идентификатор прокрутки и заканчивается на ?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: ''))
Способ 2:
query={"query" : {"match_all" : {}}}
scanResp= helpers.scan(client= es, query=query, scroll= "10m", index="", doc_type="patent", timeout="10m")
for resp in scanResp:
print "Hiya"
Если я распечатаю scanResp перед циклом for, я получаю <generator object scan at 0x108723dc0>
. Из-за этого я относительно уверен, что я каким-то образом испортил свой свиток, но я не уверен, где и как его исправить.
Результаты:
Опять же, после scroll/
он дает идентификатор прокрутки, а затем заканчивается на ?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: ''))
Я попытался увеличить Макс. попытки для класса транспорта, но это не изменило ситуацию. Я очень хотел бы понять, как это исправить.
Примечание. Мои ES находятся на удаленном рабочем столе в той же сети.