以下是配置信息。
- Java: 8
- Elastic Version: 7.1.1
Elastic dependencies added:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.1.1</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.1.1</version> </dependency>
DeleteByQueryRequest request = new DeleteByQueryRequest("source1", "source2");
在阅读文档时,我遇到了以下查询,我无法理解。
如文档中所述:
也可以通过设置大小来限制处理的文档数量。request.setSize(10);
“处理文档”是什么意思?它只会删除10个文档吗?应该设置什么批处理大小?
request.setBatchSize(100);
它的性能基于我们要删除多少个文档?我是否应该首先调用
获取文档数
,然后根据那个数字更改setBatchSize
?request.setSlices(2);
切片应该取决于执行机器上有多少个内核或弹性集群中的内核数量?文档中给出了
setSlices(2)
方法,但我却找不到org.elasticsearch.index.reindex.DeleteByQueryRequest
类中的该方法。我错过了什么?假设我以异步模式执行此删除查询,需要0.5-1.0秒,同时如果我在该索引上进行get请求,是否会出现异常? 同时,在同一时间如果我插入新文档并检索相同文档,它能否提供响应?
org.elasticsearch.client.RestHighLevelClient
类中的函数:public final void deleteByQueryAsync(DeleteByQueryRequest deleteByQueryRequest, RequestOptions options, ActionListener<BulkByScrollResponse> listener)
。那么它会发出批量请求还是通过查询删除?此外,在删除超过10K的情况下,仅有不到1K的记录,哪种方法更好?delete_by_query
还是_bulk
? - AshwinKdeleteByQuery
,它返回BulkByScrollResponse
。这就引起了混淆,不知道是_bulk
删除还是delete_by_query
。 - AshwinKdelete_by_query
而不是delete
吗?这样可以避免混淆并帮助其他用户找到这个问题。delete
也是另一个端点。我正在撰写完整的答案回复您的问题。 - Pierre-Nicolas Mougel