当前位置:   article > 正文

Es批量删除DeleteByQueryRequestBuilder_es 批量删除

es 批量删除

一、DeleteByQueryRequestBuilder

DeleteByQueryRequestBuilderElasticsearch Java客户端中的一个类,用于构建和执行基于查询条件删除文档的请求。实验结果表明:删除速率大概是每秒3万条左右。

DeleteByQueryRequestBuilder类提供了一种方便的方式来构建删除文档的查询请求。它允许您指定一个查询条件,并使用该条件来删除匹配的文档。

使用DeleteByQueryRequestBuilder类,您可以执行各种类型的查询,如基于字段值、范围、词条匹配、布尔逻辑查询等。

以下是DeleteByQueryRequestBuilder类的一些常用方法:

  1. setQuery(QueryBuilder query):设置查询条件。
  2. setIndices(String... indices):设置要在哪些索引中执行删除操作。
  3. setTypes(String... types):设置要在哪些类型中执行删除操作。
  4. setRouting(String routing):设置路由值,以确定要删除的文档所在的特定分片。
  5. setSize(int size):设置每次批量删除的文档数量。
  6. setScroll(TimeValue scroll):设置滚动时间,如果删除的文档数量太多,可以使用滚动来分批删除。

二、Es版本号:6.8.23

  1. <dependency>
  2. <groupId>org.elasticsearch.client</groupId>
  3. <artifactId>transport</artifactId>
  4. <version>6.8.23</version>
  5. </dependency>

三、代码:

  1. /**
  2. * 根据查询条件删除Es数据
  3. * @param queryBuilder 查询条件
  4. */
  5. public long deleteByQueryInSlave(QueryBuilder queryBuilder) {
  6. try {
  7. // client 是初始化的Es客户端
  8. BulkByScrollResponse response = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
  9. .filter(queryBuilder)
  10. // indexName是Es的索引
  11. .source(indexName)
  12. .get();
  13. long deleted = response.getDeleted();
  14. logger.info("deleteByQueryInSlave, 删除成功,删除文档条数: " + deleted + " ,indexName:" + indexName);
  15. } catch (Exception e) {
  16. logger.error("deleteByQueryInSlave-根据查询条件删除Es数据-异常, queryBuilder:{}", queryBuilder.toString(), e);
  17. }
  18. return 0;
  19. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/481546
推荐阅读
相关标签
  

闽ICP备14008679号