一、引入的pom文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>elasticsearch</artifactId> <version>0.0.1-SNAPSHOT</version> <name>elasticsearch</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.13.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> <!--<dependency>--> <!--<groupId>com.google.code.gson</groupId>--> <!--<artifactId>gson</artifactId>--> <!--<version>2.4</version>--> <!--</dependency>--> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
二、编辑配置文件:application.properties
#Elasticsearch # elasticsearch集群名称,默认的是elasticsearch spring.data.elasticsearch.cluster-name=elasticsearch1 spring.data.elasticsearch.cluster-nodes=192.168.200.100:9300 spring.data.elasticsearch.properties.transport.tcp.connect_timeout=120s #是否开启本地存储 #spring.data.elasticsearch.repositories.enable=true
三、索引对应的实体类
package com.example.elasticsearch.entity; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; /** * @Author: * @Date: 2019/5/10 */ @Document(indexName = "company",type = "employee",indexStoreType = "fs",shards = 5,replicas = 1,refreshInterval = "-1") public class Employee { @Id private String id; private String firstName; private String lastName; private Integer age=0; private String about; public String getId() { return id; } public Employee setId(String id) { this.id = id; return this; } public String getFirstName() { return firstName; } public Employee setFirstName(String firstName) { this.firstName = firstName; return this; } public String getLastName() { return lastName; } public Employee setLastName(String lastName) { this.lastName = lastName; return this; } public Integer getAge() { return age; } public Employee setAge(Integer age) { this.age = age; return this; } public String getAbout() { return about; } public Employee setAbout(String about) { this.about = about; return this; } public Employee() { } @Override public String toString() { return "Employee{" + "id='" + id + '\'' + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", age=" + age + ", about='" + about + '\'' + '}'; } }
四、对应的接口
package com.example.elasticsearch; import com.example.elasticsearch.entity.Employee; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; /** * @Author: * @Date: 2019/5/10 */ public interface EmployeeRepository extends ElasticsearchRepository<Employee,String> { /** * 查询雇员信息 * @param id * @return */ Employee queryEmployeeById(String id); }
五、操作类
package com.example.elasticsearch; import com.example.elasticsearch.entity.Employee; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @Author: * @Date: 2019/5/10 */ @RestController @RequestMapping(value = "/find") public class EmployeeController { @Autowired private EmployeeRepository employeeRepository; /** * 向Es插入一条数据 * @return */ @RequestMapping(value = "/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"); employeeRepository.save(employee); System.err.println("add a obj"); return "success"; }
/** * 删除 * @return */ @RequestMapping("delete") public String delete() { Employee employee = employeeRepository.queryEmployeeById("1"); employeeRepository.delete(employee); return "success"; } /** * 局部更新 * @return */ @RequestMapping("update") public String update() { Employee employee = employeeRepository.queryEmployeeById("1"); employee.setFirstName("哈哈"); employeeRepository.save(employee); System.err.println("update a obj"); return "success"; }
/** * 查询 * @return */ @RequestMapping("query") public Employee query() { Employee accountInfo = employeeRepository.queryEmployeeById("1"); System.out.println("accountInfo = " + accountInfo.toString()); // System.err.println(new Gson().toJson(accountInfo)); return accountInfo; } }
六、启动类
package com.example.elasticsearch; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class ElasticsearchApplication { public static void main(String[] args) { SpringApplication.run(ElasticsearchApplication.class, args); } }