首页 > 编程语言 >elasticsearch在Java中查询指定列的方法

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

时间:2023-11-29 12:06:12浏览次数:44  
标签:Java String fields sourceBuilder 查询 字段 elasticsearch hit

 

背景

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在Java中查询指定列的方法_搜索

作者:翎野君

标签:Java,String,fields,sourceBuilder,查询,字段,elasticsearch,hit
From: https://blog.51cto.com/lingyejun/8613642

相关文章

  • 分页查询在某些场景下引发的数据漏处理问题
    背景问题描述假设有一个表字段statues,我们分页获取数据。status初始状态为1,我们分批获取数据,每一批获取1000,对数据进行处理,如果处理成功就更新status为2,否则不更新。注意事项:分页循环查询满足条件的数据然后进行处理,通过PageHelper或者直接使用“limitstatIndex,pageSize”来分页......
  • vue3+vite 代码混淆插件 | JavaScript obfuscator
    安装插件yarnadd--devrollup-plugin-javascript-obfuscator创建obfuscator.js文件,把下面相应代码放入js文件中importobfuscatorPluginfrom'rollup-plugin-javascript-obfuscator';exportfunctioncodeObfuscatorPlugin(isBuild){if(!isBuild){return[];}......
  • java.io.IOException: 断开的管道
      2023-10-0911:45:51.834ERROR[http-nio-8080-exec-33]com.zkh360.gbb.admin.component.GlobalExceptionHandler82-[TxId:,SpanId:][,,][e979a4ac16968231501251001f1577]【Exception】异常处理,org.apache.catalina.connector.ClientAbortException:java.io.IO......
  • ElasticSearch搜索结果处理
    一、排序elasticsearch支持对搜索结果排序,默认是根据相关度算分(_score)来排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。1.1.语法说明:对结果的排序语法如下:GET/indexname/_search{"query":{"match_all":{}},"sort":[{"......
  • RestClient查询文档
    前面我们已经实现利用DSL实现文档查询和后续结果处理,下面我们利用Java RestClient实现前面的功能一、快速入门1.1.基本案例演示我们通过match_all来演示下基本的APl,先看请求DSL的组织:查询所有的信息如下:@SpringBootTestpublicclassHotelSearchTests{//创建成员变量,保存......
  • Golang Gin 获取Restful参数、URL查询参数,Form 表单参数,JSON格式参数
    前言http请求中,可以通过URL查询参数提交数据到服务器,可以通过post的json方式,还有一直方式就是Form表单。Form表单相比URL查询参数,用户体验好,可以承载更多的数据,尤其是文件上传时,特别方便。这里推荐飞雪无情的博客;写了一些列的gin的使用教程,很时候新手学习如果想对gin有一个完整......
  • java打包
    title:java打包author:ZHdate:2022-01-0912:14:30tags: -java基础categories:java基础typora-root-url:../../../sourcejava打包用法:jar{ctxui}[vfmn0PMe][jar-file][manifest-file][entry-point][-Cdir]files...选项:-c创建新的存档文件,如果指......
  • SpringBoot JPA实践之EntityManage查询返回自定义DTO entityManager.createNativeQuer
    SpringBootJPA实践之EntityManage查询返回自定义DTOentityManager.createNativeQuery(sql)  在很多时候我更喜欢随意组合查询出来返回一个DTO对象的实现,JPA提供的多数查询均以返回Entity居多,它提供的EntityManager对象可以实现将SQL语句查询的结果转换为自定义DTO对象(这与......
  • Java开发者的Python快速进修指南:实战之跳表pro版本
    之前我们讲解了简易版的跳表,我希望你能亲自动手实现一个更完善的跳表,同时也可以尝试实现其他数据结构,例如动态数组或哈希表等。通过实践,我们能够发现自己在哪些方面还有所欠缺。这些方法只有在熟练掌握之后才会真正理解,就像我在编写代码的过程中,难免会忘记一些方法或如何声明属性......
  • java Date类型数据如何比较大小
    ......