Получить все строки с помощью elasticsearch_dsl

В настоящее время я использую следующую программу для извлечения идентификатора и информации о его серьезности из эластичного поиска.

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q

client = Elasticsearch(
    [
        #'http://user:[email protected]:9200/',
        'http://10.x.x.11:9200/',
    ],
    verify_certs=True
)

s = Search(using=client, index="test")

response = s.execute()

for hit in response:
  print hit.message_id, hit.severity,  "\n\n"

я считаю, что по умолчанию запрос возвращает 10 строк. У меня есть более 10000 строк в эластичном поиске. Мне нужно получить всю информацию.

Может ли кто-нибудь подсказать мне, как запустить тот же запрос для получения всех записей?


person srinath    schedule 02.08.2016    source источник


Ответы (1)


Вы можете использовать scan() вспомогательную функцию, чтобы получить все документы из вашего test индекса:

from elasticsearch import Elasticsearch, helpers

client = Elasticsearch(
    [
        #'http://user:[email protected]:9200/',
        'http://10.x.x.11:9200/',
    ],
    verify_certs=True
)

docs = list(helpers.scan(client, index="test", query={"query": {"match_all": {}}}))

for hit in docs:
  print hit.message_id, hit.severity,  "\n\n"
person Val    schedule 02.08.2016