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遍也 ...
随机推荐
- java代码(7) ---guava之Bimap
guava之Bimap bimap的作用很清晰:它是一个——映射,可以通过key得到value,也可以通过value得到key 一.概述 1.bimap和普通HashMap区别 (1)在java集合类 ...
- CentOS8.1中搭建Gitlab服务器
依旧是写在前面的话♠:很多IT人从业N年也许都还没有亲自搭过一次Gitlab服务器,是不是?有木有?!通常都是背着自己的笔记电脑到一家公司入职,或入职后领到公司分配的电脑,然后分配了Git账号,拿了将 ...
- HDU - 2546 饭卡 题解
题目大意 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够) ...
- jQuery实现购物车商品数量及总价的计算
记录一下项目中遇到的计算购物车商品数量和总价的jQuery代码,重点在于选择器以及.text()命令的使用. 先上效果图,点击加减,商品数量以及总价会发生相应变化. html代码: <div c ...
- @atcoder - AGC034F@ RNG and XOR
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个值域在 [0, 2^N) 的随机数生成器,给定参数 A[ ...
- Chrome启动选项
1. Chrome Options 这是一个Chrome的参数对象,在此对象中使用add_argument()方法可以添加启动参数,添加完毕后可以在初始化Webdriver对象时将此Options对象 ...
- LR脚本信息函数-lr_get_host_name
lr_get_host_name() 返回主机的名称. char * lr_get_host_name(); lr_get_host_name函数返回执行脚本的机器的名称. 示例:lr_get_hos ...
- ida 调试android之路
系统: Mac OSX 调试环境:IDA7.0, adb 手机环境:红米手机 android 4.4.4 前提条件: 红米手机root之路:https://www.cnblogs.com/dzqdz ...
- Java 从入门到进阶之路(二十四)
在之前的文章我们介绍了一下 Java 中的 集合框架中的Collection 的泛型,本章我们来看一下 Java 集合框架中的Collection 的子接口 List. Collection 接口有 ...
- Sharding-JDBC 快速入门第一课
1. 概述 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Sharding-Sidecar(计划中)这 ...