Я пытаюсь установить timeout
для определенного запроса, используя elasticsearch_dsl
. Я пробовал следующее:
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, F
...
def do_stuff(self, ids):
client = Elasticsearch(['localhost'], timeout=30)
s = Search(using=client,
index= 'my_index',
doc_type=['my_type'])
s = s[0:100]
f = F('terms', my_field=list(ids))
s.filter(f)
response = s.execute()
return response.hits.hits
Примечания:
- Когда я меняю
doc_type
на тип, содержащий миллион объектов, запрос выполняется нормально. - Когда я указываю
doc_type
на несколько миллиардов объектов, я получаю ошибку тайм-аута, показывающую тайм-аут по умолчанию, равный 10 секундам.
Из elasticsearch_dsl
документов я даже пытался установить подключение по умолчанию тайм-аут:
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, F
from elasticsearch_dsl import connections
connections.connections.create_connection(hosts=['localhost'], timeout=30)
Я все еще получил 10-секундную ошибку тайм-аута.