我需要从Python中的ElasticSearch中检索文档。
所以我写了这个小代码:
es = Elasticsearch( myHost, port=myPort, scheme="http") request = '''{"query": {"match_all": {}}}''' results = es.search(index=myIndex, body=request)['hits']['hits'] print(len(results)) >> 10
问题是它只从我的索引中返回10个文档,而我希望只有几百个。如何从索引中检索所有文档?
有几种方法可以解决这个问题。
如果知道索引中的最大文档量,可以设置 size 搜索的参数为该数字或更多。例如,如果您知道您将拥有少于100个,则可以通过这种方式检索它们 results = es.search(index=myIndex, body=request, size=100)['hits']['hits']
size
results = es.search(index=myIndex, body=request, size=100)['hits']['hits']
如果你不知道那个号码,而你仍然想要所有的号码,你必须使用 scan 函数,而不是 search 功能。这方面的文件是 here
scan
search