2021年大数据ELK(十二):Elasticsearch编程(环境准备)
全网最详细的大数据ELK文章系列,强烈建议收藏加关注!
新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。
目录
Elasticsearch编程
一、环境准备
1、准备IDEA项目结构
2、准备POM依赖
3、创建用于保存职位信息的实体类
4、编写接口和实现类
5、创建实现类
Elasticsearch编程
要将搜索的功能与前端对接,我们必须要使用Java代码来实现对Elasticsearch的操作。我们要使用一个JobService类来实现之前我们用RESTFul完成的操作
一、环境准备
1、准备IDEA项目结构
- 创建elasticsearch_example项目
- 创建包结构如下所示
包 |
说明 |
cn.it.elasticsearch.entity |
存放实体类 |
cn.it.elasticsearch.service |
存放服务接口 |
cn.it.elasticsearch.service.impl |
存放服务接口实现类 |
2、准备POM依赖
<repositories><!-- 代码库 --><repository><id>aliyun</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled><updatePolicy>never</updatePolicy></snapshots></repository>
</repositories><dependencies><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.6.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.11.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>6.14.3</version><scope>test</scope></dependency>
</dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><target>1.8</target><source>1.8</source></configuration></plugin></plugins>
</build>
3、创建用于保存职位信息的实体类
注意:
在id字段上添加一个 @JSONField注解,并配置注解的serialize为false,表示该字段无需转换为JSON,因为它就是文档的唯一ID。
参考代码:
public class JobDetail {// 因为此处无需将id序列化为文档中@JSONField(serialize = false)private long id; // 唯一标识private String area; // 职位所在区域private String exp; // 岗位要求的工作经验private String edu; // 学历要求private String salary; // 薪资范围private String job_type; // 职位类型(全职/兼职)private String cmp; // 公司名private String pv; // 浏览量private String title; // 岗位名称private String jd; // 职位描述public long getId() {return id;}public void setId(long id) {this.id = id;}public String getArea() {return area;}public void setArea(String area) {this.area = area;}public String getExp() {return exp;}public void setExp(String exp) {this.exp = exp;}public String getEdu() {return edu;}public void setEdu(String edu) {this.edu = edu;}public String getSalary() {return salary;}public void setSalary(String salary) {this.salary = salary;}public String getJob_type() {return job_type;}public void setJob_type(String job_type) {this.job_type = job_type;}public String getCmp() {return cmp;}public void setCmp(String cmp) {this.cmp = cmp;}public String getPv() {return pv;}public void setPv(String pv) {this.pv = pv;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getJd() {return jd;}public void setJd(String jd) {this.jd = jd;}@Overridepublic String toString() {return "JobDetail{" +"id=" + id +", area='" + area + '\'' +", exp='" + exp + '\'' +", edu='" + edu + '\'' +", salary='" + salary + '\'' +", job_type='" + job_type + '\'' +", cmp='" + cmp + '\'' +", pv='" + pv + '\'' +", title='" + title + '\'' +", jd='" + jd + '\'' +'}';}
}
4、编写接口和实现类
cn.it.elasticsearch.service包中创建JobFullTextService接口,该接口中定义了职位全文检索相关的Java API接口。
参考代码:
/*** 定义JobFullTextService*/
public interface JobFullTextService {// 添加一个职位数据void add(JobDetail jobDetail);// 根据ID检索指定职位数据JobDetail findById(long id) throws IOException;// 修改职位薪资void update(JobDetail jobDetail) throws IOException;// 根据ID删除指定位置数据void deleteById(long id) throws IOException;// 根据关键字检索数据List<JobDetail> searchByKeywords(String keywords) throws IOException;// 分页检索Map<String, Object> searchByPage(String keywords, int pageNum, int pageSize) throws IOException;// scroll分页解决深分页问题Map<String, Object> searchByScrollPage(String keywords, String scrollId, int pageSize) throws IOException;// 关闭ES连接void close() throws IOException;
;
}
5、创建实现类
在cn.it.elasticsearch.service.impl包下创建一个实现类:JobFullTextServiceImpl,并实现上面的接口。
参考代码:
public class JobFullTextServiceImpl implements JobFullTextService {@Overridepublic void add(JobDetail jobDetail) {}@Overridepublic void update(JobDetail jobDetail) {}@Overridepublic JobDetail findById(long id) {return null;}@Overridepublic boolean deleteById(long id) {return false;}@Overridepublic List<JobDetail> searchByKeywords(String keywords) {return null;}@Overridepublic Map<String, Object> searchByPage(String keywords, int pageNum, int pageSize) {return null;}@Overridepublic Map<String, Object> searchByScrollPage(String keywords, String scrollId, int pageSize) {return null;}
}
-
2021年大数据ELK(十二):Elasticsearch编程(环境准备)相关推荐
- 2021年大数据ELK(二):Elasticsearch简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...
- 2021年大数据ELK(二十五):添加Elasticsearch数据源
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 添加Elasticsearch数据源 一.Kibana索引模式 添加Elast ...
- 2021年大数据ELK(二十六):探索数据(Discovery)
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 探索数据(Discovery) 一.使用探索数据功能 二.导入更多的Apach ...
- 2021年大数据ELK(二十二):采集Apache Web服务器日志
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 采集Apache Web服务器日志 一.需求 二.准备日志数据 三.使用Fil ...
- 2021年大数据ELK(二十):FileBeat是如何工作的
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 FileBeat是如何工作的 一.input和harvester 1.inpu ...
- 2021年大数据ELK(二十八):制作Dashboard
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 制作Dashboard 一.点击第三个组件图标,并创建一个新的Dashboar ...
- 2021年大数据ELK(二十四):安装Kibana
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 安装Kibana 在Linux下安装Kibana,可以使用Elastic stack ...
- 2021年大数据ELK(二十七):数据可视化(Visualize)
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 数据可视化(Visualize) 一.数据可视化的类型 二.以饼图展示404与 ...
- 2021年大数据ELK(二十一):Logstash简介和安装
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Logstash简介和安装 一.简介 1.经典架构 2.对比Flume 3.对 ...
- 2021年大数据ELK(二十三):Kibana简介
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. Kibana简介 通过上面的这张图就可以看到,Kibana可以用来展示丰富的图表. ...
最新文章
- NIO详解(四):NIO编程
- 【手写系列】透彻理解Spring事务设计思想之手写实现
- 配置tomcat容器的access.log访问日志
- Oracle建立约束、删除约束
- 从github下载项目并导入eclipse
- 为什么要importmodulepython_python – 为什么“import”这样实现?
- 点击弹出窗口外任意地方关闭弹出窗口
- Nginx—— Rewrite规则的使用
- (转)分布式锁的几种使用方式(redis、zookeeper、数据库)
- 怎么恢复oracle的包,【学习笔记】使用dbms_backup_restore包恢复数据库
- c向文件中插入数据_如何把数据写入顺序文件中,VBA代码中Write#语句的利用
- 什么是Makefile.am和Makefile.in?
- LayaAir 项目开发使用TiledMap注意
- C语言简单连点器网课必备
- PR值计算公式带来的思考
- 明尼苏达量表结果分析_MMPI明尼苏达多项人格心理测试量表结果分析
- 7个实战技巧帮你提升前端技术水平!
- wps 符号操作(仅符号)
- 你还在迷茫?设计师前3年的瓶颈期要这样突破
- 信息系统项目管理师(2022年) —— 第 13 章 项目合同管理
热门文章
- 2021年大数据ELK(二):Elasticsearch简单介绍