Тайм-аут мультипоиска elasticsearch

Я успешно использовал один и тот же код для другого хоста es, и он работал нормально, однако, когда я пытаюсь использовать его на другом хосте es, он дает мне ConnectionTimeout: ConnectionTimeout caused by - ReadTimeout(HTTPSConnectionPool(host='search-production-fjexfhlafkqulrsxn5gkvzwnia.ap-northeast-2.es.amazonaws.com', port=443): Read timed out. (read timeout=10))

Я установил параметр timeout внутри каждого запроса при создании множественного поиска, я прочитал https://elasticsearch-py.readthedocs.io/en/master/api.html и документацию по мультипоиску, однако я не могу найти какой-либо параметр времени ожидания.

Я предполагаю, что мне нужно передать параметр тайм-аута при создании клиента es или при создании мультипоиска. Любая помощь?

мой код выглядит следующим образом: awsauth = AWS4Auth('AKIAIALITIB7ZYLX3HFA', 'QWCb/I40T1UHfmPHm79mN3VU2ySwExhHh0PO/ri1', регион, сервис)

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))

Если это обычный поисковый запрос, я могу просто передать параметр «тайм-аут», как я делал для каждого запроса внутри запроса msearch.

Однако в документации https://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch нет параметра, отвечающего за время ожидания в msearch.

В соответствии с Время ожидания соединения с Elasticsearch что-то говорит об изменении номера порта, я пробовал оба 443, 9200 и оба не работают.

РЕДАКТИРОВАТЬ: как только я запускаю запрос, поскольку данных для поиска слишком много, он использует 99% процессора, поэтому для завершения поиска требуется некоторое время. Это работает, когда я запускаю только два или три запроса.


person haneulkim    schedule 08.01.2020    source источник
comment
измените тайм-аут в вашем запросе на: request_timeout=30 Странно, что вы получили тайм-аут с этим запросом? Насколько велики ваши документы? Сколько шартов/реплик присутствует в вашем кластере?   -  person LeBigCat    schedule 08.01.2020
comment
Вы имеете в виду изменить timeout=2h на request_timeout=30? Я делал это раньше, и он говорит мне, что это неправильный формат. В каждом запросе будет около 3000, а внутри одного msearch будет около 70 запросов, то есть документов 3000x70. У меня есть 5 основных и 5 осколков реплик.   -  person haneulkim    schedule 08.01.2020
comment
вы не можете получить более 10000 документов   -  person dejanmarich    schedule 08.01.2020
comment
Да, но он по-прежнему будет получать до 10000 документов.   -  person haneulkim    schedule 08.01.2020