社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Elasticsearch

ElasticSearch:等待长时间运行的请求完成

Tony • 6 年前 • 1926 次点击  

知道什么时候 长距离跑 ElasticSearch请求完成了吗?

今天,我有一个进程周期性地从一个AWS托管的ES中清除大约10万个文档,其中包含大约6000万个文档。

var settings = new ConnectionSettings(new Uri("https://mycompany.es.aws.com"));
settings.RequestTimeout(TimeSpan.FromMinutes(3)); // not sure this helps

var client = new ElasticClient(settings);

var request = new DeleteByQueryRequest("MyIndex") { ... };

// this call will return an IsValid = true, httpstatus = 504 after ~60s,
var response = await client.DeleteByQueryAsync(request);

即使超时设置为3分钟,调用也始终在~60秒后返回,响应为空,状态代码为504。虽然通过Kibana,我可以看到删除操作在接下来的几分钟内继续(并正确完成)。

有没有更好的方法来请求和监视(等待完成)长时间运行的ES请求?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30714
 
1926 次点击  
文章 [ 2 ]  |  最新文章 6 年前
Simon Lang
Reply   •   1 楼
Simon Lang    6 年前

我同意@lebigcat的观点,超时来自AWS,这不是嵌套问题。

但要回答你的问题: 这个 _delete_by_query 请求支持 wait_for_completion 参数。如果设置为 true ,请求立即返回任务ID。然后可以通过任务API请求任务状态。

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

LeBigCat
Reply   •   2 楼
LeBigCat    6 年前

这不是嵌套弹性问题,嵌套查询中的默认超时为0(无超时)。

您从Amazon服务器获得超时(默认为60秒)

https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/ts-elb-error-message.html

这个链接解释了你需要知道的一切:)