问题描述
想要获取搜索结果中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"));
}
设置了两次from,跳过数据太多了