此处的两种方式是根据<id>删除,第二种是更具查询条件删除<query>。
首先说第一种删除方法(根据<id>删除),我是登陆在web管理界面,documents功能,然后选择Document Type为xml,执行如下命令:
<delete><id>627f7ac3-05fc-42f1-a7ed-2b710ede4dd8</id></delete>
那么优点是删除目标较明确,缺点就是得一条一条的删除,像我今天早晨一次性要删除几万条记录那不得累死。
第二种删除方法:
<delete><query>operatetime:2015-11*</query></delete>
根据查询条件,瞬间就能删除模糊查询下的所有数据,速度快,使用效率较高。
下面来解释一下这两中删除方法:
大家可以发现:
<delete><id>627f7ac3-05fc-42f1-a7ed-2b710ede4dd8</id></delete>
<id>是什么?这里解释一下<id>就是在 schema.xml 的 uniqueKey 所指字段的值,而不是索引内部的 docId,那么我存的是日志信息,所以我将uuid作为uniqueKey的值(类似主键的作用),第二个就和明确了,<query>查询条件</query>。
当然也可以在Linux中的Shell下删除,具体命令:
curl http://localhost:8080/update --data-binary "<delete><query>operatetime:2015-11*</query></delete>" -H 'Content- type :text/xml; charset=utf-8' #删除完后,要提交 curl http://localhost:8080/update --data-binary "<commit/>" -H 'Content- type :text/xml; charset=utf-8'
当然也可以使用自带的post.jar来删除,具体命令:
java -Ddata=args -jar post.jar "<delete><id>627f7ac3-05fc-42f1-a7ed-2b710ede4dd8</id></delete>" #怎么使用 post.jar 查看帮助 java -jar post.jar -help
以上就是删除数据的两种方式了。
未经允许不得转载:李阳的藏宝阁 » Solr删除数据的两种方式