问题描述
我需要从Elastic Index中删除文档。我尝试了以下操作,但是由于文档的大小而导致超时。
POST my-index-000001/_delete_by_query?conflicts=proceed
{
"query": {
"match_all": {}
}
}
因此,我正在考虑获取前5000条记录ids
并发送批量删除查询。谁能帮我从弹性API获取前5000个ID(无需检索整个文档对象)?还是有其他方法可以处理这种情况?
解决方法
尝试添加wait_for_completion=false
POST my-index-000001/_delete_by_query?conflicts=proceed&wait_for_completion=false
{
"query": {
"match_all": {}
}
}
如果请求包含wait_for_completion = false,Elasticsearch会执行一些预检检查,启动请求,然后返回一个可用于取消或获取任务状态的任务。 Elasticsearch在.tasks / task / $ {taskId}处以文档形式创建此任务的记录。完成任务后,应删除任务文档,以便Elasticsearch可以回收空间。
运行GET /_tasks/your-task-id
以查看其状态