Python elasticsearch超时

时间:2014-12-04 15:35:59

标签: python elasticsearch

在聚合和基数搜索等查询中,可能会有超时。

我注意到,当从python客户端执行查询时,响应有时包含:

{  
   "took":1200184,
   "timed_out":true,
   "_shards":{  
      "total":84,
      "successful":84,
      "failed":0
   }

并且返回的结果少于预期。

我的主要问题是,当发生超时时,响应仍然包含许多结果。 在解析响应结果之前,我可以检查超时是否为真,但可能有更好的方法:){... {1}}或like raise an exception

2 个答案:

答案 0 :(得分:2)

您可以使用以下方法增加elasticsearch的超时: -

es.search(index="my_index",
      doc_type="document",
      body=get_req_body(),
      request_timeout=30)

默认情况下,分配的值为10.另一方面,如果要捕获异常,则可以使用调度程序并检查已过去的时间,并在超出时间限制时捕获异常。

答案 1 :(得分:0)

Elasticsearch-py客户端有一个可以传递的命名参数,可以让您为搜索请求设置超时值。

但我建议在这种情况下使用滚动来获取结果,它类似于数据库查询的游标。这是一个非常好的example如何使用滚动。使用有限的滚动大小,请求不太可能超时,您将能够获取所有结果而不是接收部分结果。

具有超时参数的示例搜索调用

es.search(index="index", doc_type="doc_type", body=body, timeout=50)