在elasticsearch中除了索引数据、更新数据之外,我们还会涉及到删除数据的场景。所以这批文章我们介绍下elasticsearch删除数据的部分。
在Elasticsearch中删除数据有3种方式,分别是:
1、通过id删除数据 2、通过查询匹配的数据再进行删除 3、直接删除整个索引
下面我们分别介绍下这三种方式。
一、通过id删除数据
这里主要是通过http请求的delete方式,传入索引和id即可,删除语法如下:
DELETE /${index_name}/_doc/${id}
例如我们还是使用devices这张表作为示例:
我们想要删除id为1的这条记录,因此使用的语句如下:
DELETE devices/_doc/1
然后我们就可以看到id位1的数据被删除掉了。
二、通过查询条件进行删除
这里我们也可以通过查询语句进行删除,这时命中此查询结果的所有文档都会被删除掉。使用语法如下:
POST /${index_name}/_doc/_delete_by_query json
例如我们还是使用devices这张表作为示例,我们想要删除uuid为333的数据,那么使用的语句如下:
post /devices/_doc/_delete_by_query { "query":{ "term":{ "device_uuid":333 } } }
执行一下,可以看到被删除了。
再看下结果
uuid为333的文档已经不存在了。
三、通过删除整个索引进行删除数据
这里我们相当于是把整个索引都删除掉了,类似于把整个mysql的库都删掉了,所以数据会被立即删除掉,这里的删除语法是:
DELETE /${index_name}
备注:
1、在elasticsearch中删除文档的数据的时候(通过id或者通过查询语句删除),数据只会被标记删除,这些数据还会继续占用磁盘空间,等待下次compact的时候,数据才会被真正的从磁盘里面删除掉。
2、在elasticsearch中使用删除索引的方式会直接删除数据。
3、在elasticsearch中删除文档的数据的时候(通过id或者通过查询语句删除),数据只会被标记删除,虽然磁盘上还保留着原始数据,但是在查询的时候是不会被显示出来的。
还没有评论,来说两句吧...