ElasticSearch 返回的hits里面获取不到数据

新手上路,请多包涵

问题描述

想要获取搜索结果中hits的数据,遍历his[]的时候发现为空。不知道是什么原因,es版本6.4.3,client版本6.4.3
使用postman能获取数据。使用restclient,控制台显示如下:但是hits[] 中无内容。
总记录数:3
{"took":2,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":3,"max_score":4.0247,"hits":[]}}
总记录数:3
{"took":5,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":3,"max_score":4.0247,"hits":[]}}

 searchText = "安装出错 pass";
        SearchRequest searchRequest = new SearchRequest(INDEX_NAME);
        searchRequest.types(INDEX_TYPE);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(QueryBuilders.multiMatchQuery(searchText,"title","text"));
        sourceBuilder.from(PAGE_STAER);
        sourceBuilder.from(PAGE_SIZE);
        sourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC));
        searchRequest.source(sourceBuilder);

        try {
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
            SearchHits hits = searchResponse.getHits();
            SearchHit[] searchHits = hits.getHits();
            List<EsSearchDocResponseMessage> tempEntityList = new ArrayList<>();
            for(SearchHit hit : searchHits){
                float score = hit.getScore();
                Map<String,Object> sourceAsMap = hit.getSourceAsMap();
                EsSearchDocResponseMessage tempEntity = new EsSearchDocResponseMessage();
                tempEntity.setScore(score);
                tempEntity.setText((String)sourceAsMap.get("text"));
                tempEntity.setArticleId((String)sourceAsMap.get("articleId"));
            }
阅读 15.4k
2 个回答
        sourceBuilder.from(PAGE_STAER);
        sourceBuilder.from(PAGE_SIZE);

设置了两次from,跳过数据太多了

新手上路,请多包涵

试试
sourceBuilder.from(PAGE_STAER-1);
sourceBuilder.from(PAGE_SIZE);

分页从0开始吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题