Búsqueda elástica que no da datos con gran número para el tamaño de la página

Tamaño de los datos a obtener: 20,000 aprox.

Problema: buscar datos indexados de Elastic Search usando el comando de abajo en python

Pero no obteniendo ningún resultado.

from pyelasticsearch import ElasticSearch es_repo = ElasticSearch(settings.ES_INDEX_URL) search_results = es_repo.search( query, index=advertiser_name, es_from=_from, size=_size) 

Si doy un tamaño menor o igual a 10,000, funciona bien pero no con 20,000. Ayúdame a encontrar una solución óptima para esto.

PD: al profundizar en ES encontramos este mensaje de error:

    La ventana de resultados es demasiado grande, desde + el tamaño debe ser menor o igual a: [10000] pero fue [19999]. Consulte la API de desplazamiento para obtener una manera más eficiente de solicitar grandes conjuntos de datos.

    Para el uso en tiempo real, la mejor solución es utilizar la búsqueda después de la consulta . Solo necesita un campo de fecha y otro campo que identifique de forma única a un documento: es suficiente un campo _id o un campo _uid . Intente algo como esto, en mi ejemplo me gustaría extraer todos los documentos que pertenecen a un solo usuario; en mi ejemplo, el campo usuario tiene un keyword datatype :

     from elasticsearch import Elasticsearch es = Elasticsearch() es_index = "your_index_name" documento = "your_doc_type" user = "Francesco Totti" body2 = { "query": { "term" : { "user" : user } } } res = es.count(index=es_index, doc_type=documento, body= body2) size = res['count'] body = { "size": 10, "query": { "term" : { "user" : user } }, "sort": [ {"date": "asc"}, {"_uid": "desc"} ] } result = es.search(index=es_index, doc_type=documento, body= body) bookmark = [result['hits']['hits'][-1]['sort'][0], str(result['hits']['hits'][-1]['sort'][1]) ] body1 = {"size": 10, "query": { "term" : { "user" : user } }, "search_after": bookmark, "sort": [ {"date": "asc"}, {"_uid": "desc"} ] } while len(result['hits']['hits']) < size: res =es.search(index=es_index, doc_type=documento, body= body1) for el in res['hits']['hits']: result['hits']['hits'].append( el ) bookmark = [res['hits']['hits'][-1]['sort'][0], str(result['hits']['hits'][-1]['sort'][1]) ] body1 = {"size": 10, "query": { "term" : { "user" : user } }, "search_after": bookmark, "sort": [ {"date": "asc"}, {"_uid": "desc"} ] } 

    Luego encontrarás todos los documentos adjuntos a la var var.

    Si desea utilizar la scroll query , doc aquí :

     from elasticsearch import Elasticsearch, helpers es = Elasticsearch() es_index = "your_index_name" documento = "your_doc_type" user = "Francesco Totti" body = { "query": { "term" : { "user" : user } } } res = helpers.scan( client = es, scroll = '2m', query = body, index = es_index) for i in res: print(i) 

    Probablemente sus restricciones de ElasticSearch .

     index.max_result_window index setting which defaults to 10,000