04-springboot整合elasticsearch初识-简单增删改查及复杂排序,分页,聚合操作
前面大概了解了一下elasticsearch的数据存储和数据的查询。现在学习一下,es的复杂操作。
官网相关文档地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/7.x/java-docs-delete-by-query.html
spring boot提供的Elasticsearch 的Data查询:https://docs.spring.io/spring-data/elasticsearch/docs/4.0.1.RELEASE/reference/html/#repositories.definition
1.简单操作
前面介绍了es的简单使用,现在梳理一下,通常工作使用中,用到的增删改查功能。
通过继承ElasticsearchRepository接口,通过提供的模板方法进行操作。AbstractElasticsearchRepository类已经帮我们封装好了常用的增删改查的方法,我们只要调用就行。
本质也是通过springboot 提供的es的操作类进行操作。eg:
@Override
public Page<T> findAll(Pageable pageable) {
SearchQuery query = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withPageable(pageable).build();
return elasticsearchOperations.queryForPage(query, getEntityClass());
}
private void createIndex() {
elasticsearchOperations.createIndex(getEntityClass());
}
private void putMapping() {
elasticsearchOperations.putMapping(getEntityClass());
}
1.新增和修改
都是用封装好的index方法进行操作。
@Test
public void updateEntity(){
Person person = Person.builder().id("66666").name("六哥ya!!!").age(19).build();
Person p = repository.index(person);
p= repository.findById("66666").get();
log.info("=========================== {} ==================",p);
}
2.查询方法
- 前面介绍的根据,方法名关键字自动生成json
- 用@Query查询的方法
- 使用Elasticsearch提供的方法
ElasticSearch中提供了一些通用的方法:
findAll()
findById()
findAllById()
count();
Page<T> search(QueryBuilder query, Pageable pageable)
3.删除的方法
public void deleteById(ID id)
public void delete(T entity)
deleteAll(Iterable<? extends T> entities)
2.复杂操作
在实际使用中,可能涉及到比较复杂的业务,所以,要了解一下复杂业务情况下,ES在Java中怎么进行操作
1.排序
springboot也提供了排序的封装,但是要注意的是,不能对text进行排序,只能对数字或者字母排序。
除此之外,实体类上要增加注解@Field(fielddata=true)
Sort类提供了排序相关的字段方法,具体可以查看相关类及API文档
public void getList(){
Sort order = Sort.by(new Sort.Order(Sort.Direction.DESC, "age"));
Iterable<Person> all = repository.findAll(order);
for (Person person : all) {
log.info("==============={}================",person);
}
}
2.分页
repository存储库提供的查询方法
@Test
public void getPageList() throws JsonProcessingException {
// PageRequest age = PageRequest.of(1, 10, Sort.Direction.ASC, "age");
PageRequest of = PageRequest.of(1, 10);
MatchAllQueryBuilder query = QueryBuilders.matchAllQuery();
Page all = repository.findAll(of);
Page search = repository.search(query, of);
log.info("==============={}================", JsonMapperUtil.toString(all));
log.info("==============={}================", JsonMapperUtil.toString(search));
}
es java API查询的方法
NativeSearchQuery nq = new NativeSearchQueryBuilder().withPageable(of).build();
Page<Person> people = operations.queryForPage(nq, Person.class);
3.聚合操作
关联查询
@Test
public void getSortList(){
TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("by_country").field("country")
.subAggregation(AggregationBuilders.dateHistogram("by_year")
.field("dateOfBirth")
.subAggregation(AggregationBuilders.avg("avg_children").field("children"))
);
NativeSearchQuery query = new NativeSearchQueryBuilder().addAggregation(aggregationBuilder).build();
List<Person> people = operations.queryForList(query, Person.class);
}
最小值/最大值/平均值
04-springboot整合elasticsearch初识-简单增删改查及复杂排序,分页,聚合操作的更多相关文章
- SpringBoot 集成Elasticsearch进行简单增删改查
一.引入的pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- SpringBoot整合MybatisPlus基本的增删改查,保姆级教程
概述 MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法. 引入依赖 在项目中 ...
- Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看
一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
- Redis:五种数据类型的简单增删改查
Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...
- 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- Mybatis实现简单增删改查
Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...
- SpringBoot整合MongoDB JPA,测试MongoRepository与MongoTemplate用法,简单增删改查+高级聚合
源码 地址 -> https://github.com/TaoPanfeng/case/tree/master/04-mongo/springboot-mongo 一 引入依赖 <depe ...
- elasticsearch实例讲解增删改查
1.首先弄明白四个概念 elasticsearch 关系型数据库 index 数据库 type 表 document 行 field 字段 如果刚一开始理解比较困难,那你就在心中默念100遍,10遍也 ...
随机推荐
- DMR windows 软件x64
解压缩以后,默认使用串口4的USB热点板,用notepad2软件修改MMDVM.ini的呼号,ID,频率,串口号保存在打开DMR.bat即可,晶体有偏移的运行DMR500.bat https://sh ...
- 如何拿到阿里P8 Offer-候选人视角谈面试
自我介绍 首先简单自我介绍一下,我叫陈映平,花名叫做小卡,2011年校招进入腾讯,是腾讯课堂B侧的前端技术负责人.2015年响应总理的号召,跟朋友一起出来创业,跟前面一位讲师的经历有点像,然后2018 ...
- jmeter怎么衡量tps的值
jmeter也没有tps这么个报告数据,后来又翻了翻loadrunner关于tps的定义 1.TPS:Trasaction per second也就是事务数/秒.它是软件测试结果的测量单位.一个事务是 ...
- (一)c++之细解 const 与 static
const成员变量与const成员函数与const对象 static成员变量与static成员函数与static全局变量 const成员变量 1. const用于类中成员变量时,将类成员变为只读属性( ...
- 关于thinkhphp3.1中废弃 preg_replace /e 修饰符
警告:preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead 网上查了下 发现 php5.5版 ...
- [CF163E]e-Government
题目 点这里看题目. 分析 首先,我们不需要真的从 AC 自动机中把串删掉.由于我们计算贡献和,我们只需要在 AC 自动机上,把已经删除的串的贡献抹掉就可以了. 接着考虑询问.这是一个很基 ...
- OKR-Periods of Words【KMP最小前后缀】
OKR-Periods of Words 传送门:链接 来源:UPC 8180 题目描述 串是有限个小写字符的序列,特别的,一个空序列也可以是一个串.一个串P是串A的前缀,当且仅当存在串B,使得 ...
- 基于移动最小二乘法的点云曲面拟合(python)
1.移动最小二乘法介绍 为了更好地对数据量大且形状复杂的离散数据进行拟合,曾清红等人[1]开发出一种新的算法——移动最小二乘法.这种新的最小二乘算法为点云数据的处理提供了新的方法.使用点云数据拟合曲面 ...
- MFC_VC++_时间获取与保存列表控件内容到文件操作方法
MFC_VC++_时间获取与保存列表控件内容到excel文件操作方法 void CDataView::OnBnClickedBtnExporttoexcel() { CTime time = CTim ...
- 一文搞定Redis五大数据类型及应用场景
本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...