使用elasticsearch_dsl获取所有行

时间:2016-08-02 11:26:42

标签: elasticsearch elasticsearch-dsl

目前我正在使用以下程序从弹性搜索中提取id及其严重性信息。

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q

client = Elasticsearch(
    [
        #'http://user:secret@10.x.x.11: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行。我需要获取所有信息。

有人可以指导我如何运行相同的查询来获取所有记录吗?

1 个答案:

答案 0 :(得分:2)

您可以使用scan() helper function来检索test索引中的所有文档:

from elasticsearch import Elasticsearch, helpers

client = Elasticsearch(
    [
        #'http://user:secret@10.x.x.11: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"