【问题标题】:Get top xyz from Elastic GET API从 Elastic GET API 获取 top xyz
【发布时间】:2020-12-15 02:47:43
【问题描述】:

我需要从 Elastic Index 中删除文档。我尝试了以下操作,但由于文档的大小,它会超时。

POST my-index-000001/_delete_by_query?conflicts=proceed
{
  "query": {
    "match_all": {}
  }
}

因此,我正在考虑获取前 5000 条记录 ids 并发送批量删除查询。谁能帮我从弹性 API 获取前 5000 个 ID(无需检索整个文档对象)?或者有没有其他方法来处理这种情况?

【问题讨论】:

    标签: c# elasticsearch kibana elk elasticsearch-net


    【解决方案1】:

    尝试添加wait_for_completion=false

    from here

        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 以查看其状态

    【讨论】:

    • 当任务完成后,_tasks 端点将不再可见。你需要用.tasks/task/your-task-id检查它
    • @Val .tasks 索引。感谢您指出这一点。
    • @all 感谢您的建议。我会检查并告诉你。谢谢!
    猜你喜欢
    • 2020-05-29
    • 2023-03-24
    • 2018-12-05
    • 2017-01-17
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2011-03-18
    • 2019-08-01
    相关资源
    最近更新 更多