测试使用索引库crud和高级查询分页
1.搭建ES的服务
- 导入依赖 - <dependency> 
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
 </dependency>
- 配置ES - ... 
 spring:
 application:
 name: hrm-es-service
 data:
 elasticsearch:
 cluster-name: elasticsearch
 cluster-nodes: 127.0.0.1:9300 #9200是图形界面端,9300代码端
 ...
2.创建EmployeeDoc
/**
* 针对于 Employee 表的文档映射
* indexName:索引库
* type:类型(表类型)
*/
@Document(indexName = "hrm" , type = "employee")
public class EmployeeDoc {
//对应文档的id
@Id
private Long id;
@Field(type = FieldType.Keyword) //指定为 不分词
private String userName;
private int age;
@Field(type =FieldType.Text,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")
private String intr;
...
3.创建索引库
@RunWith(SpringRunner.class)
@SpringBootTest(classes = EsServiceApplication2050.class)
public class ESTest {
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@Test
public void testCreateIndex() {
//创建索引
elasticsearchTemplate.createIndex(EmployeeDoc.class);
//做文档映射
elasticsearchTemplate.putMapping(EmployeeDoc.class);
}
}
4.定义ElasticsearchRepository
@Repository
public interface EmployeeElasticsearchRepository extends ElasticsearchRepository<EmployeeDoc,Long> {}
5.基本CRUD
@Autowired
private EmployeeElasticsearchRepository employeeElasticsearchRepository;
//初始化
@Test
public void testCreateIndex() {
//创建索引
elasticsearchTemplate.createIndex(EmployeeDoc.class);
//做文档映射
elasticsearchTemplate.putMapping(EmployeeDoc.class);
}
//添加数据
@Test
public void testAdd(){
//准备数据
EmployeeDoc employeeDoc = new EmployeeDoc();
employeeDoc.setAge(18);
employeeDoc.setUserName("王大锤");
employeeDoc.setIntr("我爱中国");
//添加数据到es
employeeElasticsearchRepository.save(employeeDoc);
}
//添加数据
@Test
public void testUpdate(){
//准备数据
EmployeeDoc employeeDoc = new EmployeeDoc();
employeeDoc.setId(5L); //有id就是修改
employeeDoc.setAge(18);
employeeDoc.setUserName("周伯通");
employeeDoc.setIntr("深得童子通真传");
//添加数据到es
employeeElasticsearchRepository.save(employeeDoc);
}
//删除数据
@Test
public void testDelete(){
employeeElasticsearchRepository.deleteById(5L);
}
//获取数据
@Test
public void testGet(){
Optional<EmployeeDoc> optional = employeeElasticsearchRepository.findById(5L);
System.out.println(optional.get());
}
6.高级查询分页
//通过索引库,高级查询和分页
/**
* 用户名为 隔壁老王
* age在 10 - 20
* 按照 id排序降序
* 分页 每页 2条 取第一页
*/
@Test
public void testSearchAndPage() throws Exception{
//1.创建查询建造器对象
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
//2.给查询建造器添加查询条件对象
//1.创建组合查询条件对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
//2.添加查询条件:分词查询:username
List<QueryBuilder> must= boolQuery.must();
must.add(QueryBuilders.matchQuery("username","周伯通" ));
//2.添加查询条件:范围查询:age:10到30
List<QueryBuilder> filter = boolQuery.filter();
filter.add(QueryBuilders.rangeQuery("age").lte(30).gte(10));
//3.给查询建造器添加查询条件对象
queryBuilder.withQuery(boolQuery);
//3.给查询建造器添加分页对象:从第0页开始,每页2条
queryBuilder.withPageable(PageRequest.of(0,2 ));
//4.给查询建造器添加排序
//1.创建排序对象:id,降序
FieldSortBuilder sortBuilder = new FieldSortBuilder("id").order(SortOrder.DESC);
//2.给查询建造器添加排序
queryBuilder.withSort(sortBuilder);
//5.创建查询对象
NativeSearchQuery searchQuery = queryBuilder.build();
//6.传给search方法,执行高级查询分页排序功能,得到分页对象
Page<EmployeeDoc> page = employeeElasticsearchRepository.search(searchQuery);
//7.获取结果
//获得总条数
int totalPages = page.getTotalPages();
System.out.println(totalPages);
//获得当前页数据
Iterator<EmployeeDoc> iterator = page.getContent().iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
测试使用索引库crud和高级查询分页的更多相关文章
- java整合Elasticsearch,实现crud以及高级查询的分页,范围,排序功能,泰文分词器的使用,分组,最大,最小,平均值,以及自动补全功能
		//为index创建mapping,index相当于mysql的数据库,数据库里的表也要给各个字段创建类型,所以index也要给字段事先设置好类型: 使用postMan或者其他工具创建:(此处我使用p ... 
- 大型运输行业实战_day04_3_高级查询+分页
		1.高级查询+分页最终结果 2.分页的本质分析 前端传入:当前页 和 每页显示条数 数据库必须查询出:数据列表 和 总共条数 页面显示包括的数据有: 列表 + 每页显示条数 + 当前页 + 总共 ... 
- springboot整合Mangodb实现crud,高级查询,分页,排序,简单聚合
		//linux安装mangodb教程:https://www.cnblogs.com/yangxiaohui227/p/11347832.html 1.引入maven 依赖 <dependenc ... 
- JAVAEE——宜立方商城07:Linux上搭建Solr服务、数据库导入索引库、搜索功能的实现
		1. 学习计划 1.Solr服务搭建 2.Solrj使用测试 3.把数据库中的数据导入索引库 4.搜索功能的实现 2. Solr服务搭建 2.1. Solr的环境 Solr是java开发. 需要安装j ... 
- Elasticsearch (1)  - 索引库 文档 分词
		创建索引库 ES的索引库是一个逻辑概念,它包括了分词列表及文档列表,同一个索引库中存储了相同类型的文档.它就相当于MySQL中的表,或相当于Mongodb中的集合. 关于索引这个语: 索引(名词):E ... 
- lucene内存索引库、分词器
		内存索引库 特点 在内存中开辟一块空间,专门为索引库存放.这样有以下几个特征: 1) 因为索引库在内存中,所以访问速度更快. 2) 在程序退出时,索引库中的文件也相应的消失了. 3) ... 
- (转) 淘淘商城系列——使用SolrJ查询索引库
		http://blog.csdn.net/yerenyuan_pku/article/details/72908538 我们有必要在工程中写查询索引库的代码前先进行必要的测试.我们先到Solr服务页面 ... 
- (转)淘淘商城系列——使用solrj来测试索引库
		http://blog.csdn.net/yerenyuan_pku/article/details/72892280 我们使用solrj来操作索引库,一般习惯先建一个单元测试类测试下增删改查方法是否 ... 
- 【Solr】索引库查询界面详解
		目录 索引库查询界面详解 回到顶部 索引库查询界面详解 q:主查询条件.完全支持lucene语法.还进行了扩展. fq:过滤查询.是在主查询条件查询结果的基础上进行过滤.例如:product_pric ... 
随机推荐
- 算法设计与分析——n后问题(回溯法+位运算)
			一.问题描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 二.算法设计 解n后问题的回溯算法描述如下: #include ... 
- react中报错Failed to set an indexed property on 'CSSStyleDeclaration': Index property setter is not supported
			产生这个报错的原因是我当时将样式写到了less文件,我在div中使用的使用应该是使用className = ,而我误写了一个style = .style里面当然没有自定义的className,所以产生 ... 
- mysql常用运行原理
			MySQL的客户端/服务器架构 MySQL的服务器程序直接和我们存储的数据打交道,然后可以有好多客户端程序连接到这个服务器程序,发送增删改查的请求,然后服务器就响应这些请求,从而操作它维护的数据.和微 ... 
- 47.QT-QChart之曲线图,饼状图,条形图使用
			1.使用准备 在pro中, 添加QT+= charts 然后在界面头文件中添加头文件并声明命名空间,添加: #include <QtCharts> QT_CHARTS_USE_NAMES ... 
- HIFIMAN TWS600A听感小记——测评出街Man
			HIFIMAN TWS600A听感小记——测评出街Man 几年前蓝牙耳塞在大哥苹果的带领下有着掀翻小池塘的气势.蓝牙耳塞完全替代了我在通勤路上用的有线塞子,当时随便买了一副两百多元的塞子,低音轰头就算 ... 
- iOS AOP实战
			AOP: 面向切面编程,偏向于处理业务的某个阶段 适用场景: 1. 参数校验:网络请求前的参数校验,返回数据的格式校验等等 2. 无痕埋点:统一处理埋点,降低代码耦合度 3. 页面统计:帮助统计页面访 ... 
- Python语法速查: 15. 常用数据结构
			返回目录 本篇索引 (1)array (2)bisect (3)deque (4)defaultdict (5)namedtuple (6)heapq (7)itertools (1)array ar ... 
- 设置fiddler抓取安卓手机的包
			1.在手机端设置代理,IP地址为fiddler所在电脑IP,端口默认8888 2.在fiddler上打开工具-设置-连接,勾选允许远程计算机连接,点击确定 3.安装证:手机浏览器输入 http://( ... 
- java之程序流程控制
			顺序结构:代码由上至下依次执行: 分支结构: if () { } else{ } if () { } else if () { } else { } switch(常量){ case 常量: 语句; ... 
- 21-django-pure-pagination分页
			一.django-pure-pagination分页 github上的描述(django-pure-pagination provides advanced pagination features a ... 
