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)