многозадачный тайм-аут поиска - PullRequest
1 голос
/ 08 января 2020

Я успешно использовал один и тот же код для разных хостов, и он работал нормально, однако, когда я пытаюсь использовать его на разных хостах, он дает мне 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 и документацию по многопоточному поиску, однако я не могу найти какой-либо параметр тайм-аута.

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

мой код выглядит следующим образом: 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))
* это обычный поиск Я могу просто передать параметр 'timeout', как я делал для каждого запроса внутри запроса msearch.

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

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

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

...