将elasticsearch查询结果划分为块?

时间:2017-04-21 09:51:51

标签: python python-2.7 elasticsearch

我有一个像这样的弹性搜索查询,这个查询会产生大约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

1 个答案:

答案 0 :(得分:1)

不幸的是,您一次无法获得超过10000个结果。而且你甚至不能分享这一点,所以如果你真的想获得25k的结果,你需要使用扫描API。

只是为了澄清:我在早期版本中谈论的是elasticsearch 5.x(也许是2.4