赞
踩
DeleteByQueryRequestBuilder
是Elasticsearch Java客户端中的一个类,用于构建和执行基于查询条件删除文档的请求。实验结果表明:删除速率大概是每秒3万条左右。
DeleteByQueryRequestBuilder
类提供了一种方便的方式来构建删除文档的查询请求。它允许您指定一个查询条件,并使用该条件来删除匹配的文档。
使用DeleteByQueryRequestBuilder
类,您可以执行各种类型的查询,如基于字段值、范围、词条匹配、布尔逻辑查询等。
以下是DeleteByQueryRequestBuilder
类的一些常用方法:
setQuery(QueryBuilder query)
:设置查询条件。setIndices(String... indices)
:设置要在哪些索引中执行删除操作。setTypes(String... types)
:设置要在哪些类型中执行删除操作。setRouting(String routing)
:设置路由值,以确定要删除的文档所在的特定分片。setSize(int size)
:设置每次批量删除的文档数量。setScroll(TimeValue scroll)
:设置滚动时间,如果删除的文档数量太多,可以使用滚动来分批删除。- <dependency>
- <groupId>org.elasticsearch.client</groupId>
- <artifactId>transport</artifactId>
- <version>6.8.23</version>
- </dependency>
- /**
- * 根据查询条件删除Es数据
- * @param queryBuilder 查询条件
- */
- public long deleteByQueryInSlave(QueryBuilder queryBuilder) {
- try {
- // client 是初始化的Es客户端
- BulkByScrollResponse response = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
- .filter(queryBuilder)
- // indexName是Es的索引
- .source(indexName)
- .get();
- long deleted = response.getDeleted();
- logger.info("deleteByQueryInSlave, 删除成功,删除文档条数: " + deleted + " ,indexName:" + indexName);
- } catch (Exception e) {
- logger.error("deleteByQueryInSlave-根据查询条件删除Es数据-异常, queryBuilder:{}", queryBuilder.toString(), e);
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。