同福

批量删除Elasticsearch匹配指定条件的查询结果的文档【20210710】

介绍

介绍

福哥在使用Elasticsearch的时候需要删除匹配指定条件的查询结果的文档,找了半天终于让福哥解决了

现在就分享给大家

教程

delete_by_query

通过delete_by_query关键字将查询结果文档全部删除掉(慎用!!!)

示例:查出所有age小于21的全部文档将其删除掉

curl -X POST -H 'Content-Type: application/json' -d '{"query":{"bool":{"must":{"range":{"age":{"lt":21}}}}}}' 'http://localhost:9200/user/_delete_by_query'

结果:

{
  "took": 0,
  "timed_out": false,
  "total": 0,
  "deleted": 0,
  "batches": 0,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1.0,
  "throttled_until_millis": 0,
  "failures": []
}

总结

这个命令太过暴力!!

保险起见,我们还是先用 _search 查一下,确定了结果集是需要删除的,再换成 _delete_by_query 删除掉比较好~~