Elasticsearch 连接超时
from datetime import datetime
from elasticsearch import Elasticsearch
es = Elasticsearch()
doc = {
'author': 'kimchy',
'text': 'Elasticsearch: cool. bonsai cool.',
'timestamp': datetime(2010, 10, 10, 10, 10, 10)
}
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc)
print(res['created'])
这个简单的代码返回以下错误:
This simples code is returning the following error:
elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host='localhost', port=9200): Read timed out. (read timeout=10))
很奇怪,因为服务器已经准备好并设置好了(http://localhost:9200/ 正在返回一些 json).
Very strange, because the server is ready and set (http://localhost:9200/ is returning some json).
默认情况下,超时值设置为 10 秒.如果要更改全局超时值,可以通过在创建对象时设置标志 timeout=your-time 来实现.
By default, the timeout value is set to 10 secs. If one wants to change the global timeout value, this can be achieved by setting the flag timeout=your-time while creating the object.
如果您已经创建了对象而没有指定超时值,那么您可以通过在查询中使用 request_timeout=your-time 标志为特定请求设置超时值.
If you have already created the object without specifying the timeout value, then you can set the timeout value for particular request by using request_timeout=your-time flag in the query.
es.search(index="my_index",
doc_type="document",
body=get_req_body(),
request_timeout=30)