java - 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++)
{
...
}
解决方案
由于 SearchHit 计算命中和内部命中,因此它将更多或等于命中文档
而不是使用终止条件作为 getTotalHits() 使用 getHits()
SearchHits searchHits = searchResponse.getHits();
SearchHit[] searchHit = searchHits.getHits();
for(int i=0; i < searchHits.getHits().length ;i++)
{
...
}
在这里,searchHits.getHits() 返回一个 SearchHit 数组。然后在该数组上使用长度,我们可以知道没有命中
推荐阅读
- javascript - Highlight the Search Text in FlatList - React Native
- scala - Where to use `ApplicativeError` instead of `Either`?
- flutter - 错误 DART:名称“x”不是类型,因此不能用作类型参数
- visual-studio-code - How to create custom dialog box using VScode API
- sharepoint - Error using ADAL in Android app for Teams
- php - 以编程方式扩展 WooCommerce 订阅
- docker - Is there a way to run Jenkins with Docker as non-root user?
- jquery - How to track click event on auto generated HTML elements in Template via jQuery in Django
- python-3.x - Geting list in python using map function
- c# - Dynamically formatting Text items in a ListBox in XAML