大数据 ELK(十二):Elasticsearch 编程(环境准备)

#头条创作挑战赛#

一、环境准备

1、准备 IDEA 项目结构


2、准备 POM 依赖


    
        aliyun
        http://maven.aliyun.com/nexus/content/groups/public/
        
            true
        
        
            false
            never
        
    




    
        org.elasticsearch.client
        elasticsearch-rest-high-level-client
        7.6.1
    
    
        org.apache.logging.log4j
        log4j-core
        2.11.1
    
    
        com.alibaba
        fastjson
        1.2.62
    
    
        junit
        junit
        4.12
        test
    
    
        org.testng
        testng
        6.14.3
        test
    




    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.1
            
                1.8
                1.8
            
        
    



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;
    }


    @Override
    public 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 searchByKeywords(String keywords) throws IOException;


    // 分页检索
    Map searchByPage(String keywords, int pageNum, int pageSize) throws IOException;


    // scroll分页解决深分页问题
    Map 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 {
    @Override
    public void add(JobDetail jobDetail) {
        
    }


    @Override
    public void update(JobDetail jobDetail) {


    }


    @Override
    public JobDetail findById(long id) {
        return null;
    }


    @Override
    public boolean deleteById(long id) {
        return false;
    }


    @Override
    public List searchByKeywords(String keywords) {
        return null;
    }


    @Override
    public Map searchByPage(String keywords, int pageNum, int pageSize) {
        return null;
    }


    @Override
    public Map searchByScrollPage(String keywords, String scrollId, int pageSize) {
        return null;
    }
}



展开阅读全文

更新时间:2024-09-13

标签:数据   注解   字段   薪资   岗位   接口   定义   职位   结构   代码   环境

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top