elasticsearch在Java中查询指定列的方法

编程入门 行业动态 更新时间:2024-10-25 01:37:04

elasticsearch在Java中查询指定列的<a href=https://www.elefans.com/category/jswz/34/1771314.html style=方法"/>

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中查询指定列的方法

本文发布于:2023-11-15 11:27:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1598810.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   elasticsearch   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!