ElasticSearch实战(二十二)-查询并删除匹配文档(delete_by_query)

Posted 张志翔ۤ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch实战(二十二)-查询并删除匹配文档(delete_by_query)相关的知识,希望对你有一定的参考价值。

        在工作中,我们通常会使用查询条件来过滤出满足要求的数据,然后再删除它,这样的用法比较多,ES提供了delete_by_query方法实现这种场景,特此记录便于日后查阅。

        1、删除符合条件的记录

        delete_by_query方法会删除符合条件的记录,命令如下:

POST company01/_delete_by_query
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

       注:如果需要删除的数据量巨大,需要通过控制删除批次数来防止ES假死无响应,通过以下参数控制分为100个批次,每秒删除100条(根据业务需要进行调整),命令如下:

POST company01/_delete_by_query?scroll_size=100&requests_per_second=100
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

        2、任务模式

        可以查看正在执行的异步任务,命令如下:

GET _tasks?detailed=true&actions=*/delete/byquery

        也可以直接查看异步任务的信息,命令如下:

GET /_tasks/{task id}

        如果需要取消这个异步任务,命令如下:

POST _tasks/{task id}/_cancel

        到此查询并删除匹配文档(delete_by_query)介绍完成。

以上是关于ElasticSearch实战(二十二)-查询并删除匹配文档(delete_by_query)的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch实战(二十二)-数据写入

ElasticSearch实战(二十八)-高亮查询

ElasticSearch实战(二十八)-高亮查询

ElasticSearch实战(二十四)-查询语法扩展

ElasticSearch实战(二十四)-查询语法扩展

ElasticSearch实战(二十九)-分页查询