一、介绍
根据term,match等查询方式去删除大量的文档
注意:如果需要删除的内容,是该index下的大部分数据,不建议使用delete-by-query
, 因为这种方式匹配文档,是一条条的去删除的,非常消耗性能 推荐: 新建一个新的index,将保留的文档内容添加到新的index,然后再直接访问新的index即可。
POST /person/_delete_by_query
{
"query": {
"range": {
"age": {
"gte": 30,
"lte": 50
}
}
}
}
2.2、java 代码
package com.chb.test;
import com.chb.utils.ESClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.junit.Test;
import java.io.IOException;
public class DeleteDemo {
RestHighLevelClient client = ESClient.getClient();
String index = "person";
@Test
public void deleteByQuery() throws IOException {
// 1、创建DeleteByQueryRequest对象
DeleteByQueryRequest request = new DeleteByQueryRequest(index);
// 2、指定检索条件, 和 SearchRequest指定query方式不一样
request.setQuery(QueryBuilders.rangeQuery("age").gte(30).lte(50));
// 3、 执行删除
BulkByScrollResponse resp = client.deleteByQuery(request, RequestOptions.DEFAULT);
// 4、返回结果
System.out.println(resp);
}
}
关注我的公众号【宝哥大数据】,更多干货