参考node
http://www.javashuo.com/article/p-hbqxmonq-eu.htmlspring
经过程序对es 进行增删改查数据库
手动加入lombok 的jarjson
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency>
配置数据源:springboot
##本项目端口号 server.port=8888 ##es所在服务器地址 端口9300 spring.data.elasticsearch.cluster-nodes = localhost:9300
es库中效果服务器
结果:数据结构
这个操做与保存操做能够公用一个方法 ,当id相同的时候进行修改,不一样的时候进行新增elasticsearch
效果:ide
(1)controller层测试
(2) 业务层
这里用到了jackson
实现类
在处理数据的时候看一下返回的数据结构:
效果
(1) controller层
(2) 业务层
接口:
实现类:
(1)controller层
(2) 业务层
接口
实现类:
效果:
代码:
(1)controller层
(2)业务层
接口:
实现类:
(3) 持久层
效果:
(1)controller
(2) 业务层
接口
实现类:
持久层:
效果:
数据库中的数据
(1)controller
(2) 业务层
接口:
实现类:
(3) 持久层
效果
(1)controller层
(2) 业务层
接口
实现类:
(3)持久层
2.5.2.5 自定义方法like查询 查询名字含有 小的查询
效果:
(1) controller层
(2) 业务层
接口:
实现类:
(3)持久层
注意:
(1) controller层
(2) 业务层
接口
实现类:
(3) 持久层
不须要写了
效果:
状况1:type="text" "analyzer": "ik_max_word"
状况2:type="text" 只能查询一个字
(1)controller层
(2) 业务层
接口
实现类:
效果:
(1) controller层
(2) 业务层
接口:
实现类:
效果:
(1)controller层
(2)业务层
接口:
实现类:
项目中:
需求:分组查询每一个班级 学生数量
设计表:对于的统计的字段不能进行分组(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)); // 一、添加一个新的聚合,聚合类型为terms,聚合名称为brands,聚合字段为column queryBuilder.addAggregation( AggregationBuilders.terms(column).field(column)); // 二、查询,须要把结果强转为AggregatedPage类型 AggregatedPage<Student> aggPage = (AggregatedPage<Student>) this.esRepository.search(queryBuilder.build()); // 三、解析 // 3.一、从结果中取出名为brands的那个聚合, // 由于是利用String类型字段来进行的term聚合,因此结果要强转为StringTerm类型 StringTerms agg = (StringTerms) aggPage.getAggregation(column); // 3.二、获取桶 List<StringTerms.Bucket> buckets = agg.getBuckets(); // 3.三、遍历 for (StringTerms.Bucket bucket : buckets) { HashMap<String, Object> map = new HashMap<>(); // 3.四、获取桶中的key,即班级名称 map.put("class", bucket.getKeyAsString()); // 3.五、获取桶中的文档数量 既各个班级下学生数量 map.put("num", bucket.getDocCount()); //将数据放入list list.add(map); } //数据处理为json String jsonData = JacksonUtils.obejectToJson(list); return jsonData; }
连接:https://pan.baidu.com/s/1hgXLhHs75CF35EI3cwnvfw 提取码:eg03