我有一个像这样的弹性搜索查询,这个查询会产生大约25k的结果,所以如何将结果的传递分成块,比如每次5000个结果,这样就不会损害服务器内存?
def get_data():
totals = 0
payload = {
"size": 50000,
"query": {
"filtered": {
"filter" : {
"bool": {
"must": [
{"term": {"events.id": "1"}},
{"range": {"score_content_0": {"gte": 60}} },
{"range": {"published_at": { "gte": "2016-12-19T00:00:00", "lte": "2017-04-19T23:59:59"}}},
{"term": {"lang": "en"}}
]
}
}
}
}
}
r = requests.post(RM_URL, json=payload)
results = json.loads(r.content, encoding='utf-8')
totals = results['hits']['total']
myhits = results['hits']['hits']
return myhits
答案 0 :(得分:1)
不幸的是,您一次无法获得超过10000个结果。而且你甚至不能分享这一点,所以如果你真的想获得25k的结果,你需要使用扫描API。
只是为了澄清:我在早期版本中谈论的是elasticsearch 5.x
(也许是2.4
)