虽然我正在弹性搜索中进行搜索,但它为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++)
{
...
}
答案 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数组。然后在该数组上使用长度,我们不会知道命中