「Elasticsearch」查询并删除匹配文档之_delete_by_query
思路:先查询确认,后精准删除
假设我想删除title是”小明今晚真的不加班“这条记录,先查看一下现有的记录:
(不加班不好吗?为什么要删除呢?)
tips:可以使用
match_phrase
精准查询,查询命令可以通过curl查询,也可以通过其他工具请求(其实道理都一样)
1 | curl -X POST "http://192.168.16.65:9211/blog/_search" -H 'Content-Type: application/json' -d' |
blog
为索引,_search
为es的查询指令,查询结果如下:
1 | { |
可以看到数据中有一条符合条件的文档,我们现在就要删除该文档。
删除title
为”小明今晚真的不加班”的文档(忍痛):
1 | curl -X POST "http://127.0.0.1:9211/blog/_delete_by_query" -H 'Content-Type: application/json' -d' |
tips: 使用
_delete_by_query
时,必须指定索引,此处blog
就是索引,_delete_by_query
是elasticsearch的删除指令
删除结果:
1 | { |
重点关注total
(查询到的条数)和deleted
(删除的总数)两个字段,最后不放心的话,可以再查询一下刚才那个文档是否还存在。
tips:es执行删除的时候es并不是立即删除,虽然我们再次查询已经找不到了,但es自身是将该文档先标记准备删除状态,一段时间后,异步删除。
评论