_delete_by_query 命令是删除记录
post 请求:http://localhost:9200/index/_delete_by_query
注:
删除也是先走和查询一样的语法,只是最后的命令是 删除的命令
{
"query":{
"term":{
"bookId":1
}
}
}
这是清空
{
"query": {
"match_all": {}
}
}
删除后返回:
{
"took": 42,
"timed_out": false,
"total": 1,
"deleted": 1,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
}
其中 deleted:1 代表删除成功
延伸阅读:
https://www.jianshu.com/p/60a6ad164035
_delete_by_query 边搜索边删除,没有事务功能,可能会出现删了一半留下一半的情况
https://elasticsearch.cn/question/6850
使用_delete_by_query为什么磁盘占用反而升高了?
采用的是标记清除的方法,就是不是马上回收控件,等到后面会自动触发merge合并segment时才会回收,也可以手动触发合并动作,并且合并的过程时,先将旧的segment文件中的数据复制到新的segment中,等复制完成之后,才会将旧的segment文件删除,因此磁盘占用反而会升高。并且每个删除任务都会创建一个删除日志文件来记录删除进度
https://blog.csdn.net/zhinengyunwei/article/details/104037864
ES 数据节点磁盘使用不均匀的原因?
是各节点平均分布分片数的策略,不同分片的数据量如果不一致就会导致磁盘占用不一致;并且如果主分片的数量如果跟数据节点的数量不一致,也会导致各个节点上的分片数量不一致,造成磁盘占用不均匀。