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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: elasticsearch在Java中查询指定列的方法

背景

ES在查询时如果数量太多,而每行记录包含的字段很多,那就会导致超出ES的查询上线,默认是100MB,但是很多场景下我们只需要返回特定的字段即可,那么如何操作呢。

主要代码

@Autowired
    private 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);
            //建立SearchResponse
            SearchResponse 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

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。


相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
|
3天前
|
算法 Java 数据处理
解决Java中堆栈溢出错误的方法
解决Java中堆栈溢出错误的方法
|
2天前
|
存储 搜索推荐 Java
如何在Java中使用Elasticsearch
如何在Java中使用Elasticsearch
|
2天前
|
Java 数据处理 数据库
Java中equalsIgnoreCase方法的应用
Java中equalsIgnoreCase方法的应用
|
2天前
|
存储 Java 程序员
Java中的国际化与本地化实现方法
Java中的国际化与本地化实现方法
|
2天前
|
SQL Java 数据库连接
Java中实现优化的数据库访问和查询性能
Java中实现优化的数据库访问和查询性能
|
2天前
|
JSON NoSQL Java
Redis18的Java客户端-StringRedisTemplate,序列化存在的问题,使用StringRedisTemplate解决序列化的方法
Redis18的Java客户端-StringRedisTemplate,序列化存在的问题,使用StringRedisTemplate解决序列化的方法
|
3天前
|
Java 网络架构 程序员
解决Java中的NoRouteToHostException异常的方法
解决Java中的NoRouteToHostException异常的方法
|
3天前
|
Java
解决Java中的EOFException异常的方法
解决Java中的EOFException异常的方法
|
3天前
|
SQL Java 数据库连接
Java中实现优化的数据库访问和查询性能
Java中实现优化的数据库访问和查询性能