我已经安装了elasticsearch
python包,我已经创建了一个弹性的clustere。我使用下面的python代码将数据发送到弹性云:
from elasticsearch import Elasticsearch, RequestsHttpConnection
import time
import datetime
es = Elasticsearch(['70.19.172.110:9200'],http_auth=('<username>','<password>'))
for x in range(0,5):
es.index(index='test', doc_type='json', id=x, body={
'data1':"Hello World',
'value':325,
'time': datetime.datetime.now()
})
print("Data sent {} ".format(x))
time.sleep(60)
因此,您可以在代码中看到我以1分钟time.sleep(60)
的间隔发送数据。这很好,所有5个数据都在弹性搜索中。然后我将time.sleep(60)
更改为time.sleep(300)
,它给了我以下错误:
elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host='70.19.172.110', port=9200): Read timed out. (read timeout=10))
我做错了什么吗?有什么方法可以保持与弹性搜索的连接,这样我就不会遇到这些类型的错误。
感谢。
答案 0 :(得分:1)
尝试启动es.index的超时,因为Elasticsearch限制为10秒超时,如果在30秒内它将不响应,这意味着您的主机未连接或不响应请求
from elasticsearch import Elasticsearch, RequestsHttpConnection
import time
import datetime
timenow = datetime.datetime.now()
es = Elasticsearch(['70.19.172.110:9200'],http_auth=('<username>','<password>'))
for x in range(0,5):
es.index(index='test', doc_type='json', id=x, body={
'data1':"Hello World",
'value':325,
'time':timenow,
'timeout':30, # The Time Of timeout you want
})
print("Data sent {} ".format(x))
time.sleep(60)