es大表删除数据

 

复制代码
curl -u elastic:elastic -X POST -H 'Content-Type: application/json' "http://192.168.1.134:19200/app_message_all/_delete_by_query?slices=3&wait_for_completion=false&scroll_size=5000&conflicts=proceed"  -d'
{
  "query": { 
    "match": {
      "massive_type": "0"
    }
  }
}
'
复制代码

 

上面语句立即返回:
{"task":"HEPkjUM_Sh27MMLXYY6J5g:57880428"}

 

可以查看后台任务:
curl -u elastic:elastic -X GET "192.168.1.134:19200/_tasks?pretty"

 

各参数说明:

slices:线程数(根据CPU的数量设置)


wait_for_completion:如果设置为true,则导致 API 阻塞,直到索引器状态完全停止。
如果设置为false,API 立即返回,并且索引器在后台异步停止。
默认为 false。如果请求包含 wait_for_completion=false,则 Elasticsearch 将执行一些预检检查,
启动请求,然后返回一个task 可用于任务 API 以取消或获取任务状态的内容。
Elasticsearch 还将创建此任务的记录作为文档,位于.tasks/task/${taskId}.
这是您认为合适的保留或删除。完成后,将其删除,以便 Elasticsearch 可以回收它使用的空间。

 

scroll_size:游标查询,根据index.max_result_window值设置,scroll_size应当小于index.max_result_window值,默认是10000


conflicts:在_delete_by_query执行过程中,依次执行多个搜索请求,
以便找到所有匹配的文档进行删除。每找到一批文档,就会执行相应的批量请求,
删除所有这些文档。如果搜索或批量请求被拒绝,_delete_by_query 则依靠默认策略重试被拒绝的请求(最多 10 次,指数回退)。
达到最大重试限制会导致_delete_by_query 中止,并且所有失败都在failures响应中返回。已执行的删除仍然存在。换句话说,
该过程没有回滚,只是中止。当第一次失败导致中止时,失败的批量请求返回的所有失败都在failures 元素;
因此,可能会有相当多的失败实体。如果您想计算版本冲突而不是导致它们中止,
请conflicts=proceed在 url 或"conflicts": "proceed"请求正文中设置。

 

若不加参数控制,会直接报错误:

复制代码
curl -u elastic:elastic -X POST "http://192.168.1.134:19200/app_message_all/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
  "query": { 
    "match": {
      "massive_type": "0"
    }
  }
}
'

{
  "error" : {
    "root_cause" : [
      {
        "type" : "search_context_missing_exception",
        "reason" : "No search context found for id [3882351]"
      }
    ],
    "type" : "search_phase_execution_exception",
    "reason" : "all shards failed",
    "phase" : "query",
    "grouped" : true,
    "failed_shards" : [
      {
        "shard" : -1,
        "index" : null,
        "reason" : {
          "type" : "search_context_missing_exception",
          "reason" : "No search context found for id [3882351]"
        }
      }
    ],
    "caused_by" : {
      "type" : "search_context_missing_exception",
      "reason" : "No search context found for id [3882351]"
    }
  },
  "status" : 404
}
复制代码

 

posted @   slnngk  阅读(193)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示