gpt4 book ai didi

elasticsearch - 为长时间运行的更新查询获取 Elasticsearch 任务的状态

转载 作者:行者123 更新时间:2023-11-29 02:50:09 25 4
gpt4 key购买 nike

假设我有一个长时间运行的更新查询,我正在更新 ~200k 到 500k,甚至更多。为什么我需要更新这么多文档超出了问题的范围。

由于客户端超时(我使用官方 ES python 客户端),我希望有一种方法来检查批量更新请求的状态,而不必使用巨大的超时值。

对于一个简短的请求,可以使用请求的响应,有没有办法我也可以获得请求的响应,或者我是否可以指定一个nameid 到请求以便稍后引用它。

对于正在运行的请求:我可以使用 tasks API 获取信息。

但对于其他状态 - 已完成/失败,我如何获得它。如果我尝试访问已经完成的任务,我会得到 resource not found

附言我正在使用 update_by_query 进行更新

最佳答案

With the task id you can look up the task directly:

GET /_tasks/taskId:1

The advantage of this API is that it integrates with wait_for_completion=false to transparently return the status of completed tasks. If the task is completed and wait_for_completion=false was set on it them it’ll come back with a results or an error field. The cost of this feature is the document that wait_for_completion=false creates at .tasks/task/${taskId}. It is up to you to delete that document.

从这里https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html#docs-update-by-query-task-api

我的用例是这样的,我需要执行 update_by_query 并且我使用 painless 作为脚本语言。起初我做了一个重建索引(测试时)。然后我尝试使用 update_by_query 功能(它们非常相似)。我向任务 api 发出了一个请求(当然操作还没有完成),我看到了正在执行的任务。当它完成时,我做了一个查询,我正在操作的字段的数据已经消失了。该脚本有效,因为我对 reindex api 使用了相同的脚本,并且一切都按预期进行。由于时间不够,我没有进一步调查,但是......是的,彻底测试......

关于elasticsearch - 为长时间运行的更新查询获取 Elasticsearch 任务的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49439374/

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