Springboot集成Elasticsearch简单教程

一、前言

java操作elasticsearch是作为一个无数据节点与其他节点之间通信,端口是9300.elasticsearch和jdk版本一定要适配,因为elasticsearch是用java编写的,随着版本的升级,用的也是最新版的jdk,所以低版本的jdk就和最新elasticsearch版本不匹配。但是,高版本的jdk可以向下兼容低版本的elasticsearch,因为jdk在升级的过程中,自身也要向下兼容。这一点很重要,否则项目是起不来的。我用的是jdk1.8,elasticsearch-2.4.2。现在,让我们开始集成。


二、注入elasticsearch依赖

<!-- Elasticsearch -->  
   <dependency>  
           <groupId>org.elasticsearch</groupId>  
           <artifactId>elasticsearch</artifactId>  
           <!-- <version>6.0.0</version> -->  
       </dependency>  
       <dependency>  
           <groupId>org.springframework.boot</groupId>  
           <artifactId>spring-boot-starter-data-elasticsearch</artifactId>  
       </dependency>  

       <dependency>  
           <groupId>org.springframework.data</groupId>  
           <artifactId>spring-data-elasticsearch</artifactId>  
       </dependency>  
       <dependency>    
           <groupId>com.fasterxml.jackson.core</groupId>    
           <artifactId>jackson-databind</artifactId>    
           <!-- <version>2.1.3</version>   -->  
     </dependency>  
     <dependency>  
           <groupId>net.java.dev.jna</groupId>  
           <artifactId>jna</artifactId>  
           <!-- <version>3.0.9</version> -->  
       </dependency>  


三、在application.properties中添加Elasticsearch配置

# elasticsearch  
spring.data.elasticsearch.cluster-name=elasticsearch  #节点名字,默认elasticsearch  
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300  #节点地址,多个节点用逗号隔开  
#spring.data.elasticsearch.local=false  
spring.data.elasticsearch.repositories.enable=true  

四、实体类(注意!id为String类型)

import org.springframework.data.annotation.Id;  
import org.springframework.data.elasticsearch.annotations.Document;  
import org.springframework.data.elasticsearch.annotations.Field;  

//indexName :索引名字(相当于mysql的数据库名字)  
//type:类型(相当于mysql的表名)
@Document(indexName = "megacorp",type = "employee", shards = 1,replicas = 0, refreshInterval = "-1")  
public class Employee {
    @Id
    private String id;
    @Field
    private String firstName;
    @Field
    private String lastName;
    @Field
    private Integer age = 0;
    @Field
    private String about;

    public String getId() {
        return id;
    }

    public void setId(final String id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(final String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(final String lastName) {
        this.lastName = lastName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(final Integer age) {
        this.age = age;
    }

    public String getAbout() {
        return about;
    }

    public void setAbout(final String about) {
        this.about = about;
    }
}

五、编写Dao

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;  
import org.springframework.stereotype.Component;  

import com.example.demo.elasticsearch.entity.Employee;  

@Component  
public interface EmployeeRepository extends ElasticsearchRepository<Employee,String>{  

    Employee queryEmployeeById(String id);  

}  

六、测试代码

import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  

import com.example.demo.elasticsearch.dao.EmployeeRepository;  
import com.example.demo.elasticsearch.entity.Employee;  
import com.google.gson.Gson;  

@RestController  
@RequestMapping("/es")  
public class ElasticSearchController {  

    @Autowired  
    private EmployeeRepository er;  

    //增加  
    @RequestMapping("/add")  
    public String add(){  

        Employee employee=new Employee();  
        employee.setId("1");  
        employee.setFirstName("xuxu");  
        employee.setLastName("zh");  
        employee.setAge(26);  
        employee.setAbout("i am in peking");  
        er.save(employee);  

        System.err.println("add a obj");  

        return "success";  
    }  

        //删除  
    @RequestMapping("/delete")  
    public String delete(){  

        er.delete("1");  

        return "success";  
    }  

        //局部更新  
    @RequestMapping("/update")  
    public String update(){  

        Employee employee=er.queryEmployeeById("1");  
        employee.setFirstName("哈哈");  
        er.save(employee);  

        System.err.println("update a obj");  

        return "success";  
    }  

        //查询  
    @RequestMapping("/query")  
    public Employee query(){  

        Employee accountInfo=er.queryEmployeeById("1");  
        System.err.println(new Gson().toJson(accountInfo));  

        return accountInfo;  
    }  

}  

非原创。文章转自:https://blog.csdn.net/zhaoyahui_666/article/details/78688688

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值