Python elasticsearch时间单位

2024-10-02 10:34:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在聚合和基数搜索之类的查询中,可能会出现超时。在

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

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

并且返回的结果比预期的要少。在

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


Tags: 方法antrue客户机timeoutoutliketotal
2条回答

Elasticsearch py client有一个命名参数,您可以通过它来设置搜索请求的超时值。在

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

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

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

您可以增加elasticsearch的超时时间使用:-在

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

默认情况下,指定的值为10。另一方面,如果您想捕获异常,可以使用调度程序检查经过的时间,并在超出时间限制时捕获异常。在

相关问题 更多 >

    热门问题