Как я могу получить 100000 регистров в elasticsearch из python? MatchAll запрос только получить 10000.Как получить 1M документы с elasticsearch в Python?
ответ
Как уже указывалось, я бы использовал 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 питона DSL http://elasticsearch-py.readthedocs.io/en/master/helpers.html#scan.
Реф. Helpers.
как я могу читать данные тогда? Я могу сохранить его в переменной? –
если подходит, да. Вы можете назначить его переменной результата – eliasah
Это то, что я делаю 'data = elasticsearch.helpers.scan ( es, query = {" query ": {" match_all ": {}}}, index =" sku_index " , doc_type = "part" \t) 'но он возвращает' <проверка объекта генератора на 0x02C39260> ' –
запрещено иметь сумму «размер» и «смещение» более чем 10000.
Вы должны использовать scan
API. Для этого есть аккуратный удобный помощник. http://elasticsearch-py.readthedocs.io/en/master/helpers.html#scan
Как вы получаете документы? Можете ли вы добавить код? – eliasah