SpringBoot集成Elasticsearch7.4 实战(三)_吳名氏
本篇文章主要讲的是:在Springboot环境下,管理数据...
本篇原创文章主要的讲的是:在Springboot的环境下,工作动态数据
1. 数据管理
1.1. 新增数据
1.1.1. 单实例新增
http手段发布统计信息统计,经典案例中我将统计信息统计文件格试有了规范标准,发布时中需求制定引索名,甚至JSON文件格试统计信息统计,只要尽将在事实时中真正做到基础。 故此用我交互式群体Vo来进行前边交换来的数据表格,再解析视频该Vo,得到要申诉的对象引索。
/**
* @Description 新增数据
* @param elasticDataVo
* @return xyz.wongs.weathertop.base.message.response.ResponseResult
* @throws
* @date 2019/11/20 17:10
*/
@RequestMapping(value = "/add",method = RequestMethod.POST)
public ResponseResult add(@RequestBody ElasticDataVo elasticDataVo){
ResponseResult response = getResponseResult();
try {
if(!StringUtils.isNotEmpty(elasticDataVo.getIdxName())){
response.setCode(ResponseCode.PARAM_ERROR_CODE.getCode());
response.setMsg("索引为空,不允许提交");
response.setStatus(false);
log.warn("索引为空");
return response;
}
ElasticEntity elasticEntity = new ElasticEntity();
elasticEntity.setId(elasticDataVo.getElasticEntity().getId());
elasticEntity.setData(elasticDataVo.getElasticEntity().getData());
baseElasticService.insertOrUpdateOne(elasticDataVo.getIdxName(), elasticEntity);
} catch (Exception e) {
response.setCode(ResponseCode.ERROR.getCode());
response.setMsg("服务忙,请稍后再试");
response.setStatus(false);
log.error("插入数据异常,metadataVo={},异常信息={}", elasticDataVo.toString(),e.getMessage());
}
return response;
}
package xyz.wongs.weathertop.palant.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import xyz.wongs.weathertop.base.entiy.ElasticEntity;
/**
* @ClassName ElasticDataVo
* @Description http交互Vo对象
* @author WCNGS@QQ.COM
* @Github <a>//github.com/rothschil</a>
* @date 2019/11/21 9:10
* @Version 1.0.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ElasticDataVo<T> {
/**
* 索引名
*/
private String idxName;
/**
* 数据存储对象
*/
private ElasticEntity elasticEntity;
}
package xyz.wongs.weathertop.base.entiy;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import xyz.wongs.weathertop.base.persistence.mybatis.entity.BaseEntity;
import java.util.Map;
/**
* @ClassName ElasticEntity
* @Description 数据存储对象
* @author WCNGS@QQ.COM
* @Github <a>//github.com/rothschil</a>
* @date 2019/11/21 9:10
* @Version 1.0.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ElasticEntity<T> {
/**
* 主键标识,用户ES持久化
*/
private String id;
/**
* JSON对象,实际存储数据
*/
private Map data;
}

1.1.2. 批量提交
1.2. 条件查询
为了能让能够万能,我的web端也包装没事层Vo,为了能让能够多媒体演示必须 我仅写有一个 match 精度一致的查询系统。/**
* @Description
* @param queryVo 查询实体对象
* @return xyz.wongs.weathertop.base.message.response.ResponseResult
* @throws
* @date 2019/11/21 9:31
*/
@RequestMapping(value = "/get",method = RequestMethod.GET)
public ResponseResult get(@RequestBody QueryVo queryVo){
ResponseResult response = getResponseResult();
if(!StringUtils.isNotEmpty(queryVo.getIdxName())){
response.setCode(ResponseCode.PARAM_ERROR_CODE.getCode());
response.setMsg("索引为空,不允许提交");
response.setStatus(false);
log.warn("索引为空");
return response;
}
try {
Class<?> clazz = ElasticUtil.getClazz(queryVo.getClassName());
Map<String,Object> params = queryVo.getQuery().get("match");
Set<String> keys = params.keySet();
MatchQueryBuilder queryBuilders=null;
for(String ke:keys){
queryBuilders = QueryBuilders.matchQuery(ke, params.get(ke));
}
if(null!=queryBuilders){
SearchSourceBuilder searchSourceBuilder = ElasticUtil.initSearchSourceBuilder(queryBuilders);
List<?> data = baseElasticService.search(queryVo.getIdxName(),searchSourceBuilder,clazz);
response.setData(data);
}
} catch (Exception e) {
response.setCode(ResponseCode.ERROR.getCode());
response.setMsg("服务忙,请稍后再试");
response.setStatus(false);
log.error("查询数据异常,metadataVo={},异常信息={}", queryVo.toString(),e.getMessage());
}
return response;
}
/** 查询Vo对象
* @ClassName QueryVo
* @Description
* @author WCNGS@QQ.COM
* @Github <a>//github.com/rothschil</a>
* @date 2019/10/25 23:16
* @Version 1.0.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class QueryVo {
/**
* 索引名
*/
private String idxName;
/**
* 需要反射的实体类型,用于对查询结果的封装
*/
private String className;
/**
* 具体条件
*/
private Map<String,Map<String,Object>> query;
}

1.3. 删除数据
1.3.1. 单实例删除
/**
* @Description 删除
* @param elasticDataVo
* @return xyz.wongs.weathertop.base.message.response.ResponseResult
* @throws
* @date 2019/11/21 9:56
*/
@RequestMapping(value = "/delete",method = RequestMethod.POST)
public ResponseResult delete(@RequestBody ElasticDataVo elasticDataVo){
ResponseResult response = getResponseResult();
try {
if(!StringUtils.isNotEmpty(elasticDataVo.getIdxName())){
response.setCode(ResponseCode.PARAM_ERROR_CODE.getCode());
response.setMsg("索引为空,不允许提交");
response.setStatus(false);
log.warn("索引为空");
return response;
}
baseElasticService.deleteOne(elasticDataVo.getIdxName(),elasticDataVo.getElasticEntity());
} catch (Exception e) {
e.printStackTrace();
}
return response;
}

2.相关章节
一、SpringBoot集成化Elasticsearch7.4 入门(一) 二、SpringBoot集成型Elasticsearch7.4 实际(二) 三、SpringBootibmsElasticsearch7.4 实际的(三)皇冠新体育APP相关的文章
- HBase 架构详解及数据读写流程_禅与计算机程序设计艺术
- 【JavaEE】多线程之线程安全(synchronized篇),死锁问题_PlLI-
- 皇冠新体育APP:从购买服务器到网站搭建成功保姆级教程~超详细_小田『开心馆』_购买服务器后怎么搭建
- ffmpeg编译android平台-(ubuntu+ndkr16b+ffmpeg3.4.12)_余生爱静
- 精选JAVA毕业设计83套??源码+论文完整资源_java毕设源码_毕业设计方案专家
- 皇冠新体育APP:C盘满了,清理C盘常用步骤!_yingLGG
- 【Maven实战技巧】「插件使用专题」Maven-Assembly插件实现自定义打包_maven自定义打包插件_洛神灬殇
- 皇冠新体育APP:【Java】继承??子类与父类有同名属性的情况。_Tcm02X_子类存在父类的同名字段
- 皇冠新体育APP:Linux文件服务配置FTP服务_Sure云小硕
- 皇冠新体育APP:Docker部署Nexus通过Maven推送及拉取代码_一恍过去
- Cannot find module ‘./assets/empty-module.js‘_帅气一只猪_cannot find module '../assets/font/alibabap
- 皇冠新体育APP:数据库范式_Cx_轩
- 皇冠新体育APP:皇冠新体育APP列表元素为字典时,如何根据其中某个相同的键值进行元素合并_曲鸟
- springboot打包出现Type org.springframework.boot.maven.RepackageMojo not present_han_ying_ying
- React基础入门知识铺垫_未及545
- 皇冠新体育APP:皇冠新体育APP 文件读取的4种方式_Decennie_python读取文件