spring-boot集成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配置

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

三、实体类

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(String id) {this.id = id;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAbout() {return about;}public void setAbout(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; @Componentpublic interface EmployeeRepository extends ElasticsearchRepository<Employee,String>{		Employee queryEmployeeById(String id); }

五、由于咱们就是入门测试,service我就省略了,直接书写接口了

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

至此,elasticsearch就算是入门了。


点这里可以跳转到人工智能网站

发表评论