Java SearchHits.getTotalHits()未给出ElasticSearch中文档的确切数量
我想使用Java SearchHits.getTotalHits()未给出ElasticSearch中文档的确切数量,java,
elasticsearch,Java,
elasticsearch,我想使用SearchHits.getTotalHits()获取与请求匹配的文档总数。但是,我发现通过SearchHits.getTotalHits()获得的值不等于SearchHits.getHits().length的总和。这正常吗 SearchHits searchHits = response.getHits(); int total = (int)searchHits.getTotalHits(); int k = 0; do { for (SearchHit hit : sea
SearchHits.getTotalHits()
获取与请求匹配的文档总数。但是,我发现通过SearchHits.getTotalHits()
获得的值不等于SearchHits.getHits().length
的总和。这正常吗
SearchHits searchHits = response.getHits();
int total = (int)searchHits.getTotalHits();
int k = 0;
do {
for (SearchHit hit : searchHits.getHits()) {
k++;
}
response = esClient.prepareSearchScroll(response.getScrollId())
.setScroll(scrollKeepAliveTime)
.get();
} while (response.getHits().getHits().length != 0);
Assert.assertEquals(total, k);
- 输出
java.lang.AssertionError:应为:但为:
一个问题是,您总是迭代searchHits
,即第一次查询的结果
在每次滚动请求之后,需要将searchHits
重新分配给response.getHits()
,如下所示:
SearchHits searchHits = response.getHits();
int total = (int)searchHits.getTotalHits();
int k = 0;
do {
for (SearchHit hit : searchHits.getHits()) {
k++;
}
response = esClient.prepareSearchScroll(response.getScrollId())
.setScroll(scrollKeepAliveTime)
.get();
searchHits = response.getHits(); <-- add this line
} while (searchHits.getHits().length != 0); <-- modify this line
Assert.assertEquals(total, k);
SearchHits SearchHits=response.getHits();
int total=(int)searchHits.getTotalHits();
int k=0;
做{
for(SearchHit:searchHits.getHits()){
k++;
}
response=esClient.prepareSearchScroll(response.getScrollId())
.setScroll(scrollKeepAliveTime)
.get();
searchHits=response.getHits();一个问题是,您总是迭代searchHits
,即第一次查询的结果
在每次滚动请求之后,需要将searchHits
重新分配给response.getHits()
,如下所示:
SearchHits searchHits = response.getHits();
int total = (int)searchHits.getTotalHits();
int k = 0;
do {
for (SearchHit hit : searchHits.getHits()) {
k++;
}
response = esClient.prepareSearchScroll(response.getScrollId())
.setScroll(scrollKeepAliveTime)
.get();
searchHits = response.getHits(); <-- add this line
} while (searchHits.getHits().length != 0); <-- modify this line
Assert.assertEquals(total, k);
SearchHits SearchHits=response.getHits();
int total=(int)searchHits.getTotalHits();
int k=0;
做{
for(SearchHit:searchHits.getHits()){
k++;
}
response=esClient.prepareSearchScroll(response.getScrollId())
.setScroll(scrollKeepAliveTime)
.get();
searchHits=response.getHits();这方面运气好吗?这方面运气好吗?