当前位置: 首页 > news >正文

Elasticsearch的自定义查询方法到底是啥?

Elasticsearch主要的目的就是查询,默认提供的查询方法是查询全部,不满足我们的需求,可以定义查询方法

自定义查询方法

单条件查询

我们查询的需求:从title中查询所有包含"鼠标"这个分词的商品数据

SELECT * 
FROM item 
WHERE title LIKE "%鼠标%"
//自定义查询方法,遵循框架给定的格式,编写的方法名称,就可以自动生成查询语句//SELECt * FROM item WHERE title LIKE "%鼠标%"/*query(查询):表示当前方法是查询方法,类似SQL中的selectItems/Item:表示要查询的实体类,以及返回类型,带s就是返回多个对象By(通过): 表示开始设置条件,类似SQL中的whereTitle: 要查询的字段Matches:表示执行查询分词的字符串,类似SQL中的like*/Iterable<Item> queryItemsByTitleMatches(String title);
    //单条件查询@Testpublic void queryOne(){Iterable<Item> items = itemRepository.queryItemsByTitleMatches("鼠标");items.forEach(item -> System.out.println(item));}
多条件查询
//多条件查询--orIterable<Item> queryItemsByTitleMatchesOrBrandMatches(String title,String brand);
    //多条件查询@Testpublic void queryOr(){Iterable<Item> items = itemRepository.queryItemsByTitleMatchesOrBrandMatches("鼠标", "罗技");items.forEach(item -> System.out.println(item));}
排序查询
    //指定price进行降序查询,desc降序,asc是升序Iterable<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title,String brand);
   //排序查询@Testpublic void orderByPrice(){Iterable<Item> items = itemRepository.queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc("鼠标", "罗技");items.forEach(item -> System.out.println(item));}
分页查询
    //分页查询Page<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title, String brand, Pageable pageable);
    //分页查询@Testpublic void pageQuery(){int pageNum = 1; //页码,SpringDataES的页码是从0开始int pageSize = 3; //每页大小Page<Item> items = itemRepository.queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc("鼠标", "罗技", PageRequest.of(pageNum - 1, pageSize));items.forEach(item -> System.out.println(item));//page中除了查询结果数据以外还有分页信息System.out.println("总页数:"+items.getTotalPages());System.out.println("总条数:"+items.getTotalElements());System.out.println("当前页:"+items.getNumber());System.out.println("每页条数:"+items.getSize());System.out.println("是否为首页:"+items.isFirst());System.out.println("是否为末页:"+items.isLast());}

上一篇文章:SpringBoot操作Elasticsearch-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/143570062下一篇文章: 

http://www.lryc.cn/news/480206.html

相关文章:

  • Jenkins找不到maven构建项目
  • 怎么更换IP地址 改变IP归属地的三种方法
  • C#-异步查询示例
  • 设计模式之适配器模式(从多个MQ消息体中,抽取指定字段值场景)
  • vue+exceljs前端下载、导出xlsx文件
  • 算法定制LiteAIServer摄像机实时接入分析平台烟火检测算法的主要功能
  • 用 Python 从零开始创建神经网络(二)
  • 嘉吉连续第七年亮相进博会
  • 设计模式之单列模式(7种单例模式案例,Effective Java 作者推荐枚举单例模式)
  • 多个服务器共享同一个Redis Cluster集群,并且可以使用Redisson分布式锁
  • 100种算法【Python版】第59篇——滤波算法之扩展卡尔曼滤波
  • 制造业数字化转型的强大赋能平台:盘古信息IMS OS工软技术底座
  • 域名+服务器+Nginx+宝塔使用SSL证书配置HTTPS
  • UnityAssetsBundle字体优化解决方案
  • Go的环境搭建以及GoLand安装教程
  • git clone,用https还是ssh
  • 量化交易系统开发-实时行情自动化交易-Okex行情交易数据
  • 【重装系统后重新配置2】pycharm 终端无法激活conda环境
  • 【LeetCode每日一题】——802.找到最终的安全状态
  • kafka安装部署--详细教程
  • CMD 查询python 出现 No pyvenv.cfg file 很奇怪 2024/11/9
  • learnopencv系列二:U2-Net/IS-Net图像分割(背景减除)算法、使用背景减除实现视频转ppt应用
  • linux命令详解,文件系统权限相关
  • 2024-11-5 学习人工智能的Day22 openCV(4)
  • JavaScript 网页设计详解教程
  • 技术复杂性导致估算不准确?5大对策
  • 【JavaEE初阶 — 多线程】死锁的产生原因和解决方法
  • mapper.xml 使用大于号、小于号示例
  • 深入了解决策树:机器学习中的经典算法
  • Flutter鸿蒙next 的 Sliver 实现自定义滚动效果