Это работает, если данные не очень большие. (например, до 5 МБ)
import eland as ed
df = ed.DataFrame('localhost:9200', 'kibana_sample_data_flights')
df.to_csv('abc.csv')
Но получаю ошибку тайм-аута через 10 секунд, если данные большие.
ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPSConnectionPool(host='xxx', port=xxx): Read timed out. (read timeout=10))
Есть ли способ изменить тайм-аут по умолчанию в этом классе?
Библиотека eland
, на которой основана elasticsearch
, позволяет установить параметр Timeout самостоятельно. А на странице PyPI для eland
подробно рассказывается о том, как использовать библиотеки eland
и elasticsearch
вместе для выполнения ваших запросов.
Вы можете сделать запрос, используя elasticsearch
и получить объект DataFrame, который вы затем to_csv
без необходимости сильно менять код.
Надеюсь, мой ответ был полезен!
Это был правильный объект подключения, который мне нужно включить тайм-аут.
import eland as ed
from elasticsearch import Elasticsearch
es = Elasticsearch([{"host": "localhost", "port": 9200, "timeout": 120}])
df = ed.DataFrame(es, es_index_pattern = "kibana_sample_data_flights")