gpt4 book ai didi

python - 在 Elasticsearch DSL 中设置请求特定超时时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:10 31 4
gpt4 key购买 nike

我正在尝试使用 elasticsearch_dsl 为特定请求设置 timeout。我尝试了以下方法:

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 docs我什至尝试设置默认连接超时:

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, F
from elasticsearch_dsl import connections

connections.connections.create_connection(hosts=['localhost'], timeout=30)

我仍然收到 10 秒超时错误。

最佳答案

因此出于某种原因,通过 .params() 添加参数似乎可以解决问题:

s = Search(using=client,
index= 'my_index',
doc_type=['my_type'])
.params(request_timeout=30)

真正有趣的部分是查询现在运行时间不到一秒,而且索引仅在单个节点上。

关于python - 在 Elasticsearch DSL 中设置请求特定超时时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33021132/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com