当前位置: 首页 > 知识库问答 >
问题:

使用 Elasticsearch 的连接超时

毛成济
2023-03-14
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'])

这简化了代码返回以下错误:

elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host='localhost', port=9200): Read timed out. (read timeout=10))

很奇怪,因为服务器已经准备好并设置好了(http://localhost:9200/ 返回了一些json)。

共有3个答案

曾航
2023-03-14

如果您使用Amazon弹性搜索服务,可能会出现连接超时问题。

es = Elasticsearch([{'host': 'xxxxxx.us-east-1.es.amazonaws.com', 'port': 443,  'use_ssl': True}])

上面的python代码覆盖了从9200到443的默认端口并将SSL设置为true将解决问题。

如果未指定端口,则尝试连接到指定主机中的端口9200,超时后失败

淳于哲
2023-03-14

尝试在Elasticsearch初始化中设置超时:

es = Elasticsearch([{'host': HOST_ADDRESS, 'port': THE_PORT}], timeout=30)

您甚至可以将retry_on_timeout设置为 True,并为max_retries提供一个可选数字:

es = Elasticsearch([{'host': HOST_ADDRESS, 'port': THE_PORT}], timeout=30, max_retries=10, retry_on_timeout=True)
夏侯自珍
2023-03-14

默认情况下,超时值设置为10秒。如果要更改全局超时值,可以通过在创建对象时设置标志timeout=您的时间来实现。

如果您已经创建了对象,但没有指定超时值,那么您可以通过在查询中使用request_timeout=your-time标志来设置特定请求的超时值。

es.search(index="my_index",
          doc_type="document",
          body=get_req_body(),
          request_timeout=30)
 类似资料:
  • 我正在尝试使用Elasticsearchparallel_bulk导入大量数据。这是我的索引结构: 这是我的python代码: 该文件包含42.644.394行,我认为每次列表“paramL”大约是5.000.000个元素时都要插入数据。因此,当我运行该脚本时,它插入了大约436.226个值,直到它崩溃并出现以下错误: 回溯(最近一次调用): 文件 “test-2-0.py”,第 133 行,在

  • 我有一个Spring Boot(v2.0.8)应用程序,它使用HikariCP(v2.7.9)池(连接到MariaDB)配置: 问题在于,我们的生产组件每隔几周就会反复抛出 。问题在于它永远不会从中恢复,并且会不断引发异常。因此,需要重新启动计算装置。 从HikariPool源代码来看,这似乎正在发生,因为每次它调用poolEntry都是空的,因此会抛出超时异常。要使其为空,连接池必须没有空闲条目

  • 问题内容: 我正在使用PDO从MySQL服务器获取数据。我注意到的是:如果MySQL服务器不可用,则此代码返回异常 实际上 需要(相对)长的时间: 如果使用MySQL,则发生异常(SQLSTATE [HY000] [2003]无法在…上连接到MySQL服务器)仅需2分钟以上,而在PostgreSQL上则需要30秒(SQLSTATE [08006] [7]超时已过期) )。 我尝试使用PDO ::

  • 问题内容: 我在代码中使用了RMI: 这些是4个.java文件。 接下来,我编译所有这些文件。然后创建一个using 。之后,我使用来在服务器端启动rmi注册表。然后,我开始使用服务器,最后使用客户端。 但是什么也没发生 客户端抛出的异常是 原因是什么,我该如何解决? 在客户端计算机上,这些是以下.class文件,在服务器端 问题答案: 错误消息说明了一切:您的连接超时。这意味着您的请求在某个(默

  • 我是新来的论坛,以及麋鹿堆栈。我试着用docker设置麋鹿堆。我成功了,然后我将filebeat添加到了撰写文件中。从那以后,filebeat就导致了连接到其他容器的问题。最初,我将其配置为将日志发送到logstash,但在所有故障排除之后,当我仍然无法让filebeat与logstash对话时,我完全删除了logstash,并尝试将filebeat直接与elasticsearch连接。在尽了我所

  • 我尝试执行下面的python代码 最后一个语句通过以下连接错误。