java 操作elasticsearch 6.8.0 根据某个条件批量删除数据

注: 连接es以及依赖相关内容请自行配置,只提供方法。

依赖如下
<dependency>
   <groupId>org.elasticsearch.client</groupId>
   <artifactId>elasticsearch-rest-high-level-client</artifactId>
   <version>6.8.0</version>
</dependency>
代码如下
@Autowired
private RestHighLevelClient elasticsearchClient;
public void deleteData() throws IOException {

    // 构建查询请求
    SearchRequest searchRequest = new SearchRequest("your_index_name"); // 替换为实际的索引名称
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.query(QueryBuilders.termQuery("查询条件", "查询条件对应值"));
    sourceBuilder.size(100); // 设置每次查询的文档数量
    searchRequest.source(sourceBuilder);

    // 执行查询请求
    SearchResponse searchResponse = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT);
    long totalHits = searchResponse.getHits().getTotalHits(); // 获取查询结果的总命中数

    // 批量删除
    int batchSize = 100; // 每批处理的文档数量
    for (int i = 0; i < totalHits; i += batchSize) {
        BulkRequest bulkRequest = new BulkRequest();
        for (SearchHit hit : searchResponse.getHits().getHits()) {
            String documentId = hit.getId();
            DeleteRequest deleteRequest = new DeleteRequest("your_index_name", "your_index_name_type", documentId); // 替换为实际的索引名称和文档类型
            bulkRequest.add(deleteRequest);
        }

        BulkResponse bulkResponse = elasticsearchClient.bulk(bulkRequest, RequestOptions.DEFAULT);

        // 处理删除结果
        if (bulkResponse.hasFailures()) {
            System.out.println("Failed to delete documents");
        } else {
            System.out.println("Delete documents successfully");
        }

        // 获取下一批文档
        if (i + batchSize < totalHits) {
            sourceBuilder.from(i + batchSize); // 设置下一批查询的起始位置
            searchRequest.source(sourceBuilder);
            searchResponse = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT);
        }
    }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以使用Elasticsearch官方提供的Java API实现批量添加数据。以下是一个简单的示例代码: ``` import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.DeleteByQueryRequest; import org.elasticsearch.index.reindex.DeleteByQueryResponse; import org.elasticsearch.index.reindex.UpdateByQueryRequest; import org.elasticsearch.index.reindex.UpdateByQueryResponse; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptType; import org.elasticsearch.search.builder.SearchSourceBuilder; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; public class ElasticsearchBulkAddExample { private final RestHighLevelClient client; public ElasticsearchBulkAddExample(RestHighLevelClient client) { this.client = client; } public void bulkAdd() throws IOException { BulkRequest bulkRequest = new BulkRequest(); // 添加要批量添加的数据 List<Map<String, Object>> dataList = new ArrayList<>(); Map<String, Object> data1 = Map.of("title", "Java入门教程", "content", "Java基础语法、面向对象编程等"); Map<String, Object> data2 = Map.of("title", "Java高级编程", "content", "多线程、网络编程、JVM优化等"); dataList.add(data1); dataList.add(data2); // 将数据添加到BulkRequest中 for (Map<String, Object> data : dataList) { bulkRequest.add(client.prepareIndex("index_name", "doc_type").setSource(data, XContentType.JSON)); } // 执行批量添加操作 BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT); if (bulkResponse.hasFailures()) { // 处理失败情况 } else { // 处理成功情况 } } } ``` 在上面的示例代码中,我们首先创建一个BulkRequest对象,然后将要批量添加的数据添加到BulkRequest中。最后调用client.bulk()方法执行批量添加操作。注意,上面的代码中的index_name和doc_type需要替换为你实际使用的索引名和文档类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值