Python elasticsearch多搜索超时
我已经成功地为不同的es主机使用了完全相同的代码,它工作得很好,但是当我尝试在不同的es主机中使用它时,它给了我很多好处Python elasticsearch多搜索超时,python,
elasticsearch,aws-elasticsearch,Python,
elasticsearch,Aws Elasticsearch,我已经成功地为不同的es主机使用了完全相同的代码,它工作得很好,但是当我尝试在不同的es主机中使用它时,它给了我很多好处 ConnectionTimeout:ConnectionTimeout由-ReadTimeout(HTTPSConnectionPool(host='search-production-fjexfhlafkqulrsxn5gkvzwnia.ap-northeast-2.es.amazonaws.com',port=443)引起:读取超时(读取超时=10)) 在创建多搜索时,我
ConnectionTimeout:ConnectionTimeout由-ReadTimeout(HTTPSConnectionPool(host='search-production-fjexfhlafkqulrsxn5gkvzwnia.ap-northeast-2.es.amazonaws.com',port=443)引起:读取超时(读取超时=10))
在创建多搜索时,我在每个查询中设置了timeout
参数,我已经阅读了多搜索的相关文档,但是我找不到任何类型的超时参数
我的猜测是,在创建es客户端或创建多搜索时,我需要传递超时参数。有什么帮助吗
我的代码如下:
awsauth=AWS4Auth('AKIAIALITIB7ZYLX3HFA','QWCb/I40T1UHFMPH79MN3Vu2YSWEXHH0PO/ri1',地区,服务)
它是常规搜索查询,我可以简单地传递'timeout'参数,就像我在msearch查询中对每个查询所做的一样
但是,在文档中没有处理msearch中超时的参数
根据它说的关于更改“端口”号的内容,我尝试了4439200和4439200,但都不起作用
编辑:一旦我运行了查询,因为有太多的数据要搜索,它正在使用99%的cpu,因此需要一段时间来完成搜索。当我只运行两个或三个查询时,它就可以工作。通过以下方式更改请求中的超时:request\u timeout=30奇怪的是,这个查询有超时?你的文件有多大?您的群集中有多少个shart/副本?您的意思是将timeout=2h更改为request_timeout=30?我以前做过,它告诉我这不是正确的格式。每个查询大约有3000个查询,在一个msearch中大约有70个查询,所以有3000x70个文档。我有5个主要碎片和5个副本碎片。你不能获取超过10000个文档。是的,但它仍然可以获取多达10000个文档。
es = Elasticsearch(
hosts=[{'host': es_host, 'port': 443}],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
def create_msearch(dt):
msearch = []
for name in polygons:
coordinates = polygons[name]
points = coord_list_to_dict(coordinates)
msearch.append({})
msearch.append({"_source":["date", "host","request_1","request_2", "location","status"],
"query":
{"bool" :
{"must": [{"match": {"request_3": "list"}},
{"range":
{"date":
{"format":"strict_date_optional_time",
"gte":f"{dt}T05:00:00.000Z",
"lte":f"{dt}T10:00:00.000Z"}}}],
"filter" : {
"geo_polygon" : {
"location" : {
"points" : points}}}}},
"size":"10000","timeout":"2h"})
return msearch
response = es.msearch(index="index", body=create_msearch(date))