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相关推荐

  1. 【elasticsearch】elasticsearch教程 es整合springboot教程 kibana安装教程 解决kibana访问404

    文章目录 linux安装es springboot-data整合es kibana安装 es和kibana配置账号密码 es的账号密码设置 kibana的账号密码设置 es高阶 分片策略 推迟分片分配 ...

  2. ES整合SpringBoot并实现京东搜索

    目录 1.springboot整合ES 1.1 添加依赖 1.2 创建一个配置,获取ES工具类对象. 1.3 进行相关对ES操作 1.3.1 操作索引---创建索引 1.3.2 操作索引--删除索引 ...

  3. Nebula Graph学习篇1_基础概念、初步使用、整合SpringBoot使用

    目录 一.基础概念 图数据库的概念 适用场景 数据模型 路径 点的VID 架构 二.初步使用 Windows安装Nebula-Graph服务 Nebula Console 连接 Nebula-Grap ...

  4. 好玩的ES--第三篇之过滤查询,整合SpringBoot

    好玩的ES--第三篇之过滤查询,整合SpringBoot 过滤查询 过滤查询 使用 类型 term . terms Filter ranage filter exists filter ids fil ...

  5. kafka集群搭建+权限认证(SASL/SCRAM)+整合springboot

    本文介绍的的是kafka集群搭建.kafka权限认证(SASL/SCRAM).整合springboot项目. 1.创建kafka日志和zookeeper文件目录: /data/kafka/kafka- ...

  6. Elasticsearch整合Springboot实现基本的全文检索

    本教程仅做个人工作笔记,可能不适用于他人的工作/学习 写在前面 实际生产中,除了考虑产品的性能跟用户体验之外,生产成本也是要考虑的,如果系统是小系统,想对某一个表(200w)做全文检索的话,可以考虑使 ...

  7. redis安装到熟练整合springboot(篇幅较长内容详细)

    尚硅谷课程redis学习笔记 1.在linux下安装redis数据库 这篇文章介绍安装 redis介绍: Redis是一个开源的key-value存储系统. 和Memcached类似,它支持存储的va ...

  8. elasticsearch整合springBoot

    elasticsearch的安装请参考:https://blog.csdn.net/qq_42410605/article/details/97884456 elasticsearch插件head的安 ...

  9. Dubbo和zookeeper整合SpringBoot时日志冲突问题

    Dubbo和zookeeper整合SpringBoot时日志冲突问题: ​ 我们在整合springboot,添加依赖的时候,会遇到日志冲突的问题,需先排除自带的zookeeper, ​ 然后单独引入z ...

最新文章

  1. CSS-in-JS的权衡
  2. 复习05统计学习方法(决策树算法Decision Tree)---图片版
  3. linux重装系统后 70-persistent-net.rules 不能删除解决
  4. 推荐系统User-Item Embedding图算法
  5. boost::mpl::integral_c用法的测试程序
  6. Android之Error: ‘L‘ is not a valid file-based resource name character解决办法
  7. matlab 传感器的迟滞,MATLAB PI迟滞模型问题
  8. arquillian_使用Arquillian(远程)测试OpenLiberty
  9. 4)机器学习基石笔记 Lecture4:Feasibility of Learning
  10. 即时通讯开发(逐行、隔行扫描)
  11. coverage path planning覆盖路径规划(2021-左海民 )
  12. URAL 1004 Sightseeing trip
  13. PHP sql IN查询改成子查询
  14. Atititi ui之道 attilax著 v3 s11.docx 1. 概览 2 1.1. 软件设计可分为两个部分:编码设计与UI设计 2 2. 用户界面设计的三大原则是:置界面于用户的控制之下;
  15. 二手笔记本电脑电池测试软件,笔记本电池修复软件Battery Doubler V1.2.1免费已注册版...
  16. 设计模式-大话设计模式学习笔记
  17. DTD-文档类型定义(Document Type Definition)
  18. 网络工程师考试内容纲要
  19. 【系统化学习】CSDN算法技能树测评
  20. [Algorithmic Toolbox学习笔记][week6]Placing Parentheses

热门文章

  1. 项目管理13禁忌[转]
  2. 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限...
  3. Lnc2cancer 3.0,lncRNAs和circRNAs数据更新及分析工具使用指南
  4. 荧光共定位定量分析,单通道散点图剖析
  5. centos查看网关地址
  6. uniapp动态显示数组_uni-app学习:4、数据绑定(变量、数组、显示控制)
  7. Java实现二分查找及其优化
  8. mac下用vs code编写c++程序
  9. 电路 | 抗干扰技术
  10. FreeRTOS系列第2篇---FreeRTOS入门指南