1

如何从 python 中获取 elasticsearch 中的 100000 个寄存器?MatchAll 查询仅检索 10000 个。

4

2 回答 2

7

就像有人指出的那样,我会使用 Scan API 来做到这一点。

import elasticsearch
from elasticsearch import Elasticsearch

ES_HOST = {
    "host": "localhost",
    "port": 9200
}
ES_INDEX = "index_name"
ES_TYPE = "type_name"

es = Elasticsearch(hosts=[ES_HOST], )

results_gen = elasticsearch.helpers.scan(
    es,
    query={"query": {"match_all": {}}},
    index=ES_INDEX,
    doc_type=ES_TYPE
)

results = list(results_gen)

您还应该阅读 elasticsearch python DSL http://elasticsearch-py.readthedocs.io/en/master/helpers.html#scan中的扫描助手。

参考。帮手

于 2017-01-31T15:33:52.290 回答
1

禁止“size”和“offset”之和超过10000。

您需要使用scanapi。那里有一个简洁方便的助手http://elasticsearch-py.readthedocs.io/en/master/helpers.html#scan

于 2017-01-31T15:28:02.823 回答