方法"/>
elasticsearch在Java中查询指定列的方法
背景
ES在查询时如果数量太多,而每行记录包含的字段很多,那就会导致超出ES的查询上线,默认是100MB,但是很多场景下我们只需要返回特定的字段即可,那么如何操作呢。
主要代码
@Autowiredprivate RestHighLevelClient client;
public List<Map<String,Object>> search(String index) {List<Map<String,Object>> hitList = new ArrayList();try {//搜索请求SearchRequest request = new SearchRequest(index);SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();//查询某字段不为空 boolQueryBuilder.must(QueryBuilders.boolQuery().must((QueryBuilders.existsQuery("字段"+ ".keyword"))));//查询指定字段String[] fields = {"字段1","字段2"};sourceBuilder.fetchSource(fields,null);//把查询添加放入请求中sourceBuilder.query(boolQueryBuilder);request.source(sourceBuilder);//查询数量sourceBuilder.size(10000);sourceBuilder.trackTotalHits(true);//建立SearchResponseSearchResponse response;response = client.search(request, RequestOptions.DEFAULT);//封装查询的信息for (SearchHit hit : response.getHits().getHits()) {hitList.add(hit.getSourceAsMap());log.debug("查询结果:{}", hit.getSourceAsString());}} catch (IOException e) {e.printStackTrace();}return hitList;
}
String[] fields = {“字段1”,“字段2”};sourceBuilder.fetchSource(fields,null);
注意:字段不是实体类中的字段,而是表中的名称,不是userStatus而是user_status
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
首发链接: .html
更多推荐
elasticsearch在Java中查询指定列的方法
发布评论