在SpringBoot中对es集群的查询操作

        在进行查询之前要先给ll索引中插入数据:

 POST /ll/product/1
{"id":1,"title": "小米手机Mix","category": "手机","brand": "小米","price": 2899.00,"images": "http://image.ll.com/12479122.jpg"}POST /ll/product/2
{"id":2,"title": "坚果手机R1","category": "手机","brand": "锤子","price": 3699.00,"images": "http://image.ll.com/12479122.jpg"}POST /ll/product/3
{"id":3,"title": "华为META20",  "category": "手机","brand": "华为","price": 4499.00,"images": "http://image.ll.com/12479122.jpg"}POST /ll/product/4
{"id":4,"title": "小米Pro","category": "手机","brand": "小米","price": 4299.00,"images": "http://image.ll.com/12479122.jpg"}POST /ll/product/5
{"id":5,"title": "荣耀V20","category": "手机","brand": "华为","price": 2799.00,"images": "http://image.ll.com/12479122.jpg"}

            将以上代码复制到kibana的控制台上运行

         运行完后可以到打开head插件查看信息

 

        数据准备完成后我们就可以开始查询了

      1.查询所有索引的数据          match_all

  @Test//搜索数据public void search() throws IOException{SearchRequest request = new SearchRequest();//搜索对象SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//构建工具//绑定类型       match_all,math,bool,term,fuzzy,filtersourceBuilder.query(QueryBuilders.matchAllQuery());//执行查询操作request.source(sourceBuilder);//执行查询搜索SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);//解析响应的结果数据SearchHit[] hits = response.getHits().getHits();for (SearchHit hit : hits) {String json = hit.getSourceAsString();//转为json格式Producter producter = gson.fromJson(json, Producter.class);//转为java对象System.err.println(producter);}}

        

        2.关键字查询           match 

   @Test//matchquerypublic void matchQuery()throws Exception{SearchRequest request = new SearchRequest();SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.matchQuery("title", "小米"));request.source(sourceBuilder);SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);SearchHit[] hits = response.getHits().getHits();for (SearchHit hit : hits) {String json = hit.getSourceAsString();//转为json格式Producter producter = gson.fromJson(json, Producter.class);//转为java对象System.err.println(producter);}}

        通过上述两个查询我们发现,查询数据的时候会有很多冗余的部分,所以我们可以将这一部分代码进行封装,在查询的时候调用这个方法,下面的查询我都会调用封装的方法

    public void basicQuery(SearchSourceBuilder sourceBuilder) throws Exception{SearchRequest request = new SearchRequest();request.source(sourceBuilder);SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);//解析响应的结果数据SearchHit[] hits = response.getHits().getHits();for (SearchHit hit : hits) {String json = hit.getSourceAsString();//转为json格式Producter producter = gson.fromJson(json, Producter.class);//转为java对象System.err.println(producter);}}

         3.范围查询         range

@Test//范围查询public void rangeQuery()  throws Exception{SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.rangeQuery("price").gte(3000).lt(4300));basicQuery(sourceBuilder);}

         4.过滤查询        source

 @Test//过滤查询public void  sourceQuery()  throws Exception{SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.matchAllQuery());//添加过滤条件sourceBuilder.fetchSource(new String[]{"id","title","price"},null);basicQuery(sourceBuilder);}

       5.排序        sort

    @Test//排序 orderpublic void  orderQuery()  throws Exception{SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.matchAllQuery());//添加排序条件sourceBuilder.sort("price", SortOrder.DESC);//desc降序        asc升序basicQuery(sourceBuilder);}

        6. 分页        page

 @Test//分页 from当前页第一条数据的索引     size当前页的大小public void  pageQuery()  throws Exception{SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.matchAllQuery());//添加分页条件int page = 2;//第二页的数据int size = 3;//每页展示三条数据sourceBuilder.from((page-1)*size);sourceBuilder.size(size);basicQuery(sourceBuilder);}

   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9915.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机驱动 mg996r金属舵机 STC89C52单片机直接驱动金属大舵机

/*无论是大舵机&#xff0c;还是小舵机&#xff0c;控制方法都一样会区别在 大舵机只能接P0口&#xff08;此口外接上拉&#xff0c;驱动电流最大&#xff09;小舵机任意口 */ //#include<reg51.h> //#define uint unsigned int //#define uchar unsigned char //sbit S…

Django框架-6

向服务器传参 通过url - path传参 path(articles/<int:year>/<int:month>/<slug:slug>/, views.article_detail),查询字符串方式传参 http://localhost:8000?key1value1&key2value2 ;&#xff08;body&#xff09;请求体的方式传参&#xff0c;比如文…

Mysql数据NULL避坑指南

NULL空值是mysql中一种特殊的数据值&#xff08;即"缺少的未知值"&#xff09;,NULL和字符串空值不是一回事&#xff0c;处理NULL与其他值不同&#xff0c;下面具体阐述相关差异&#xff1a; 一、NULL运算符 1、普通数据使用 > 、 < 、即可做常用的逻辑运算如…

前端学习——jsDay4

函数 函数使用 小练习 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widt…

Linux文件理解和系统调用

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 文件理解和系统调用 前言正文文件概念文件描述符文件描述符概念文件管理关于 files_struct文件描述符的分配一切皆文件思想 C语言文件操作文件的打开与关闭文件读写 文…

github中Mermaid的用法

这个东西是最近推出&#xff0c;首先是自己的repository中新建一个readme.md文件 需要一点前端的知识&#xff0c;就是先导入一个依赖文件&#xff0c;然后再写甘特图&#xff0c;如下&#xff1a; ### 甘特图 [<a href"https://mermaid-js.github.io/mermaid/#/gant…

RabbitMQ保证消息的可靠投递,Java实现RabbitMQ消息的可靠投递,Springboot实现RabbitMQ消息的可靠投递

文章目录 一、RabbitMQ消息可靠性概述1、引出问题2、RabbitMQ消息可靠性保证的四个环节 二、保证生产者消息发送到RabbitMQ服务器1、服务端确认&#xff1a;Transaction模式&#xff08;1&#xff09;JavaAPI&#xff08;2&#xff09;springbootAPI 2、服务端确认&#xff1a;…

峰会来袭 | CAD模型转换工具选择的难点和关键点解答

作为世界顶尖的3D软件开发SDK和CAD模型转换工具——HOOPS Exchange已问世十多年&#xff0c;深受开发者好评&#xff0c;并在工业测量、机械加工、造船设计等领域都有广泛的应用。 本次峰会将围绕CAD软件造型技术的多样性、CAD模型数据解析的难点、3D模型转换的经典问题等&…

AI绘画结合GPT 把Ai绘画与摄影玩明白

一、绘画与摄影有什么关系&#xff1f; 绘画和摄影是两种不同的艺术形式&#xff0c;它们都以其自身独特的方式捕捉和表达现实。在某些方面&#xff0c;它们是相互联系的&#xff0c;而在其他方面&#xff0c;它们又有所不同。​ 相似之处&#xff1a;绘画和摄影都是创造性的…

低代码应用开发 高效构建业务系统

低代码是传统软件开发逐步优化和演变的产物&#xff0c;并非全新革命。传统的开发方法过于昂贵和僵化&#xff0c;无法为企业提供所需的高效和敏捷的开发流程&#xff0c;且交付周期长定制能力弱&#xff0c;难以应对不断变化的市场和客户期望&#xff0c;为提高软件开发效率&a…

linux查看内存总结

参考博客&#xff1a; https://www.atlantic.net/vps-hosting/find-top-10-running-processes-by-memory-and-cpu-usage/ 最简单的命令 free -g 查看还有多少可用的内存 但是有的时候这个提供的信息实在是太少了&#xff0c;例如我今天发现服务器上可用的内存只有50G, 我想知…

杠上了,AI绘画圈激烈开战,Midjourney 和 Stable Diffusion 双双更新!

杠上了&#xff0c;AI绘画圈激烈开战&#xff0c;Midjourney 和 Stable Diffusion 双双更新&#xff01; 文章目录 Part 1. Stable Diffusion XL 0.9图像生成重磅升级&#xff1a;35亿66亿双模型Part 2. Midjourney 5.2更新&#xff1a;相机变焦、画面扩展、自定义风格 Part 1.…