14. es 整合springboot
2019独角兽企业重金招聘Python工程师标准>>>
1.目的
通过程序对es 进行增删改查
2. 实现过程
2.1 搭建springboot项目
手动加入lombok 的jar
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope> </dependency>
2.2 增加
配置数据源:
##本项目端口号 server.port=8888##es所在服务器地址 端口9300 spring.data.elasticsearch.cluster-nodes = localhost:9300
2.2.1 实体类 (很重要)
2.2.2 controller层
2.2.3 业务层
2.2.4 持久层
2.2.5 测试
es库中效果
2.3 删除
2.3.1 controller
2.3.2 业务层
2.3.3 测试
结果:
2.4 更新
这个操作与保存操作可以公用一个方法 ,当id相同的时候进行修改,不同的时候进行新增
2.5 查询
2.5.1 基本查询
2.5.1.1 查询所有 不用任何条件
效果:
(1)controller层
(2) 业务层
这里用到了jackson
实现类
在处理数据的时候看一下返回的数据结构:
2.5.1.2 根据某个字段进行排序
效果
(1) controller层
(2) 业务层
接口:
实现类:
2.5.1.3 根据id查询数据
(1)controller层
(2) 业务层
接口
实现类:
2.5.2 自定义方法查询
2.5.2.1 查询name相等的用户
效果:
代码:
(1)controller层
(2)业务层
接口:
实现类:
(3) 持久层
2.5.2.2 查询年龄相同 工作地点相同的人
效果:
(1)controller
(2) 业务层
接口
实现类:
持久层:
2.5.2.3 自定义方法Or查询 查询年龄=30 或 家住 深圳市的人
效果:
数据库中的数据
(1)controller
(2) 业务层
接口:
实现类:
(3) 持久层
2.5.2.4 自定义方法Between查询 查询年龄<=29 age >=30的人
效果
(1)controller层
(2) 业务层
接口
实现类:
(3)持久层
2.5.2.5 自定义方法like查询 查询名字含有 小的查询
效果:
(1) controller层
(2) 业务层
接口:
实现类:
(3)持久层
2.5.3 自定义查询
2.5.3.1 matchQuery(会分词 表中字段类型需要keyword)
注意:
(1) controller层
(2) 业务层
接口
实现类:
(3) 持久层
不需要写了
2.5.3.2 termQuery(不分词 表中字段类型是text类型)
效果:
情况1:type="text" "analyzer": "ik_max_word"
情况2:type="text" 只能查询一个字
(1)controller层
(2) 业务层
接口
实现类:
2.5.3.3 fuzzyQuery 模糊查询 @Field(type = FieldType.Text) 类型必须是这个类型
效果:
(1) controller层
(2) 业务层
接口:
实现类:
2.5.4 分页查询
效果:
(1)controller层
(2)业务层
接口:
实现类:
2.5.5 排序
2.5.6 聚合
项目中:
2.5.6.1 按某个字段分组
需求:分组查询每个班级 学生数量
设计表:对于的统计的字段不能进行分组(type=“keyword”)
(1) controller层
(2) 业务层
接口:
实现类:
//4.6.1 根据某个字段进行分组查询 @Override public String polymerizationByColumn(String column) throws JsonProcessingException {//造一个list用于存放数据ArrayList<Map<String, Object>> list = new ArrayList<>();NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();// 不查询任何结果queryBuilder.withSourceFilter(new FetchSourceFilter(new String[]{""}, null));// 1、添加一个新的聚合,聚合类型为terms,聚合名称为brands,聚合字段为columnqueryBuilder.addAggregation(AggregationBuilders.terms(column).field(column));// 2、查询,需要把结果强转为AggregatedPage类型AggregatedPage<Student> aggPage = (AggregatedPage<Student>) this.esRepository.search(queryBuilder.build());// 3、解析// 3.1、从结果中取出名为brands的那个聚合,// 因为是利用String类型字段来进行的term聚合,所以结果要强转为StringTerm类型StringTerms agg = (StringTerms) aggPage.getAggregation(column);// 3.2、获取桶List<StringTerms.Bucket> buckets = agg.getBuckets();// 3.3、遍历for (StringTerms.Bucket bucket : buckets) {HashMap<String, Object> map = new HashMap<>();// 3.4、获取桶中的key,即班级名称map.put("class", bucket.getKeyAsString());// 3.5、获取桶中的文档数量 既各个班级下学生数量map.put("num", bucket.getDocCount());//将数据放入listlist.add(map);}//数据处理为jsonString jsonData = JacksonUtils.obejectToJson(list);return jsonData; }
比较复杂 晚上回来 写呗
https://blog.csdn.net/zxc123e/article/details/79498113
https://www.cnblogs.com/dalaoyang/p/8990989.html
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=elasticsearch%E6%95%B4%E5%90%88springboot%20&oq=elasticsearch%25E6%2595%25B4%25E5%2590%2588springboot&rsv_pq=85bde8fb00023d6c&rsv_t=028bjx3W9VYdyYhoRpmL%2B35Z0ARouR0alx1Z3RuRjofd%2BAmE9sUEfdQQA3k&rqlang=cn&rsv_enter=0
转载于:https://my.oschina.net/u/4132381/blog/3059455
14. es 整合springboot相关推荐
- 【elasticsearch】elasticsearch教程 es整合springboot教程 kibana安装教程 解决kibana访问404
文章目录 linux安装es springboot-data整合es kibana安装 es和kibana配置账号密码 es的账号密码设置 kibana的账号密码设置 es高阶 分片策略 推迟分片分配 ...
- ES整合SpringBoot并实现京东搜索
目录 1.springboot整合ES 1.1 添加依赖 1.2 创建一个配置,获取ES工具类对象. 1.3 进行相关对ES操作 1.3.1 操作索引---创建索引 1.3.2 操作索引--删除索引 ...
- Nebula Graph学习篇1_基础概念、初步使用、整合SpringBoot使用
目录 一.基础概念 图数据库的概念 适用场景 数据模型 路径 点的VID 架构 二.初步使用 Windows安装Nebula-Graph服务 Nebula Console 连接 Nebula-Grap ...
- 好玩的ES--第三篇之过滤查询,整合SpringBoot
好玩的ES--第三篇之过滤查询,整合SpringBoot 过滤查询 过滤查询 使用 类型 term . terms Filter ranage filter exists filter ids fil ...
- kafka集群搭建+权限认证(SASL/SCRAM)+整合springboot
本文介绍的的是kafka集群搭建.kafka权限认证(SASL/SCRAM).整合springboot项目. 1.创建kafka日志和zookeeper文件目录: /data/kafka/kafka- ...
- Elasticsearch整合Springboot实现基本的全文检索
本教程仅做个人工作笔记,可能不适用于他人的工作/学习 写在前面 实际生产中,除了考虑产品的性能跟用户体验之外,生产成本也是要考虑的,如果系统是小系统,想对某一个表(200w)做全文检索的话,可以考虑使 ...
- redis安装到熟练整合springboot(篇幅较长内容详细)
尚硅谷课程redis学习笔记 1.在linux下安装redis数据库 这篇文章介绍安装 redis介绍: Redis是一个开源的key-value存储系统. 和Memcached类似,它支持存储的va ...
- elasticsearch整合springBoot
elasticsearch的安装请参考:https://blog.csdn.net/qq_42410605/article/details/97884456 elasticsearch插件head的安 ...
- Dubbo和zookeeper整合SpringBoot时日志冲突问题
Dubbo和zookeeper整合SpringBoot时日志冲突问题: 我们在整合springboot,添加依赖的时候,会遇到日志冲突的问题,需先排除自带的zookeeper, 然后单独引入z ...
最新文章
- CSS-in-JS的权衡
- 复习05统计学习方法(决策树算法Decision Tree)---图片版
- linux重装系统后 70-persistent-net.rules 不能删除解决
- 推荐系统User-Item Embedding图算法
- boost::mpl::integral_c用法的测试程序
- Android之Error: ‘L‘ is not a valid file-based resource name character解决办法
- matlab 传感器的迟滞,MATLAB PI迟滞模型问题
- arquillian_使用Arquillian(远程)测试OpenLiberty
- 4)机器学习基石笔记 Lecture4:Feasibility of Learning
- 即时通讯开发(逐行、隔行扫描)
- coverage path planning覆盖路径规划(2021-左海民 )
- URAL 1004 Sightseeing trip
- PHP sql IN查询改成子查询
- Atititi ui之道 attilax著 v3 s11.docx 1. 概览	2 1.1. 软件设计可分为两个部分:编码设计与UI设计	2 2. 用户界面设计的三大原则是:置界面于用户的控制之下;
- 二手笔记本电脑电池测试软件,笔记本电池修复软件Battery Doubler V1.2.1免费已注册版...
- 设计模式-大话设计模式学习笔记
- DTD-文档类型定义(Document Type Definition)
- 网络工程师考试内容纲要
- 【系统化学习】CSDN算法技能树测评
- [Algorithmic Toolbox学习笔记][week6]Placing Parentheses
热门文章
- 项目管理13禁忌[转]
- 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限...
- Lnc2cancer 3.0,lncRNAs和circRNAs数据更新及分析工具使用指南
- 荧光共定位定量分析,单通道散点图剖析
- centos查看网关地址
- uniapp动态显示数组_uni-app学习:4、数据绑定(变量、数组、显示控制)
- Java实现二分查找及其优化
- mac下用vs code编写c++程序
- 电路 | 抗干扰技术
- FreeRTOS系列第2篇---FreeRTOS入门指南