首页 > 解决方案 > SearchHits 没有给出确切的文档数量

问题描述

当我在弹性搜索中搜索时,它为 SearchHits 提供的文档多于没有。我想使用 java-rest 高级客户端在 Spring Boot 中实现 ES。我怎样才能得到我想要打印的文件。在我的情况下,文档编号为 10,搜索命中为 14。因此,在 for 循环中,它给出了 ArrayIndxOutOfBound。如何处理

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

标签: javaelasticsearch

解决方案


由于 SearchHit 计算命中和内部命中,因此它将更多或等于命中文档

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

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

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


推荐阅读