SearchHits没有提供确切数量的文档

时间:2018-12-12 09:47:39

标签: java elasticsearch

虽然我正在弹性搜索中进行搜索,但它为SearchHits提供的文档比没有文档多。我想使用java-rest高级客户端在春季启动中实现ES。我要打印的文件数量少。在我的情况下,doc的编号是10,搜索命中的编号是14。因此,在for循环中,它给出ArrayIndxOutOfBound。如何处理

SearchHits searchHits = searchResponse.getHits();
SearchHit[] searchHit = searchHits.getHits();
for(int i=0; i < searchHits.getTotalHits() ;i++)
{
     ...
}

1 个答案:

答案 0 :(得分:0)

SearchHit会计算匹配和内部匹配,因此等于或大于匹配文档

不要使用终止条件作为getTotalHits(),而要使用getHits()

SearchHits searchHits = searchResponse.getHits();
SearchHit[] searchHit = searchHits.getHits();
for(int i=0; i < searchHits.getHits().length ;i++)
{
     ...
}

在这里,searchHits.getHits()返回一个SearchHit数组。然后在该数组上使用长度,我们不会知道命中