delete by query

发布时间 2023-07-24 14:24:30作者: 做时间的好朋友

1.delete by query场景

基于查询出来的数据进行删除

2.删除的定义

删除并不是直接物理文档删除,而是打标机

3.API

POST index_name/_delete_by_query

{
  "query": { //这些是自定义查询条件,根据查询条件去批量删除
    "match": {//请求体跟Search API是一样的
      "message": "some message"
    }
  }
}

4.具体什么时候物理文档删除?

段segument合并的时候

  1. 自动刷新每秒会创建新的segument,查询的时候会轮流检查每个segument

  2. 后台会定期进行segument的合并,小的seguement合并为大的segument,此时才会进行物理文档document的清除

5.手动强制合并segument及删除物理文档

POST /index_name/_forcemerge?max_num_segments=1&only_expunge_deletes=true
or
POST /index_name/_forcemerge?max_num_segments=1

参数说明

参数 说明
max_num_segments 表示将某个索引每个分片强制合并为几个segument的意思
only_expunge_deletes 仅将标记为删除文档进行轻质合并并物理删除,不进行其他合并操作