Elasticsearch主要的目的就是查询,默认提供的查询方法是查询全部,不满足我们的需求,可以定义查询方法
自定义查询方法
单条件查询
我们查询的需求:从title中查询所有包含"鼠标"这个分词的商品数据
SELECT *
FROM item
WHERE title LIKE "%鼠标%"
//自定义查询方法,遵循框架给定的格式,编写的方法名称,就可以自动生成查询语句
//SELECt * FROM item WHERE title LIKE "%鼠标%"
/*
query(查询):表示当前方法是查询方法,类似SQL中的select
Items/Item:表示要查询的实体类,以及返回类型,带s就是返回多个对象
By(通过): 表示开始设置条件,类似SQL中的where
Title: 要查询的字段
Matches:表示执行查询分词的字符串,类似SQL中的like
*/
Iterable<Item> queryItemsByTitleMatches(String title);
//单条件查询
@Test
public void queryOne(){
Iterable<Item> items = itemRepository.queryItemsByTitleMatches("鼠标");
items.forEach(item -> System.out.println(item));
}
多条件查询
//多条件查询--or
Iterable<Item> queryItemsByTitleMatchesOrBrandMatches(String title,String brand);
//多条件查询
@Test
public void queryOr(){
Iterable<Item> items = itemRepository.queryItemsByTitleMatchesOrBrandMatches("鼠标", "罗技");
items.forEach(item -> System.out.println(item));
}
排序查询
//指定price进行降序查询,desc降序,asc是升序
Iterable<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title,String brand);
//排序查询
@Test
public void orderByPrice(){
Iterable<Item> items = itemRepository.queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc("鼠标", "罗技");
items.forEach(item -> System.out.println(item));
}
分页查询
//分页查询
Page<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title, String brand, Pageable pageable);
//分页查询
@Test
public 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博客https://blog.csdn.net/Z0412_J0103/article/details/143570062下一篇文章: