2017-04-21 4 views
0

私はこのようなelasticsearchクエリを持っています、このクエリは約25kの結果をもたらすでしょう、私はどのように私の結果の配信をチャンクに分割することができますか?elasticsearchクエリの結果をチャンクに分割しますか?

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

残念ながら、一度に10000を超える結果を得ることはできません。そして、この点を過去にページングすることさえできないので、実際に25kの結果を得るには、スキャンAPIを使用する必要があります。

ちょうど明確にする:私は初期のバージョンでは約elasticsearch 5.x(そしておそらく2.4)を話していることが

+0

可能ですこんにちは、私は実際に私の会社のサーバー上でそれを実行し、一度に25Kを取得し、データエンジニアの連中は私に言いました私はクエリの結果をチャンクに分割してサーバメモリの負荷を減らす必要があります。スキャンAPIをPythonでどのように使用するのか教えてください。 –

+2

これは役立つかもしれません:https://elasticsearch-py.readthedocs.io/ja/master/helpers.html#scan – Val

関連する問題