ElasticSearch-py扫描和滚动返回所有文档?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

正在使用ElasticSearch-py连接到包含300多万个文档的ES数据库

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

方法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"

结果:

提问于
用户回答回答于

python扫描方法正在生成对其余api的GET调用。它试图通过http发送您的scroll_id。这里最有可能的情况是你的scroll_id太大而无法通过http发送,所以你看到这个错误,因为它没有返回任何响应。

用户回答回答于

必须更改scroll_id每次调用滚动方法之后,如下所示:

response_tmp = es.scroll(scroll_id=scrollId, scroll= "1m")

scrollId = response_tmp['_scroll_id']

扫码关注云+社区