本文为SpringBoot集成Spring-data-Elasticsearch
转载请注明:http://blog.csdn.net/sinat_28434649/article/details/79315077
1、版本
springboot:2.0.0.RC1
#使用低版本的springboot连接ES失败
elasticsearch:5.5.2
2、SpringBoot配置
application.yml
spring:
data:
elasticsearch:
clusterName: elastic-cky
clusterNodes: your_host:9300
自动扫描repositories根目录
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.cky.demo.repositories")
public class ElasticConfig {
}
3、Java类
实体类(doc)
@Document(indexName = "company",type = "employe" , shards = 8, replicas = 1)
public class EmployeesDO implements Serializable{
private static final long serialVersionUID = -5486342676464419079L;
@Id
private Integer empNo;
private Date birthDate;
private String firstName;
private String lastName;
private String gender;
private Date hireDate;
public Integer getEmpNo() {
return empNo;
}
public void setEmpNo(Integer empNo) {
this.empNo = empNo;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getHireDate() {
return hireDate;
}
public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}
@Override
public String toString() {
return "EmployeesDO [empNo=" + empNo + ", birthDate=" + birthDate + ", firstName=" + firstName + ", lastName="
+ lastName + ", gender=" + gender + ", hireDate=" + hireDate + "]";
}
}
ElasticsearchRepository实现类
package com.cky.demo.repositories;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import com.cky.demo.domain.EmployeesDO;
public interface EmployeesRepository extends ElasticsearchRepository<EmployeesDO,Integer>{
}
4、测试
测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class ElasticTest {
@Autowired
EmployeesRepository employeesRepository;
@Test
public void Test() {
EmployeesDO employeesDO = new EmployeesDO();
employeesDO.setEmpNo(123);
employeesDO.setFirstName("Tom");
employeesDO.setLastName("jery");
employeesDO.setGender("M");
employeesRepository.save(employeesDO);
}
}
成功新增了doc
5、问题:
主要遇到问题就是Spring-Data-ElasticSearch 和 ElasticSearch版本不匹配,导致一直连接不上ES,这两个版本需要匹配(见官网),spring-boot 1.5.x,不支持高版本的spring-Data-ElasticSearch,因此选用高版本的spring-boot。
spring data elasticsearch | elasticsearch |
---|---|
3.0.0.RC2 | 5.5.0 |
3.0.0.M4 | 5.4.0 |
2.0.4.RELEASE | 2.4.0 |
2.0.0.RELEASE | 2.2.0 |
1.4.0.M1 | 1.7.3 |
1.3.0.RELEASE | 1.5.2 |
1.2.0.RELEASE | 1.4.4 |
1.1.0.RELEASE | 1.3.2 |
1.0.0.RELEASE | 1.1.1 |
6、参考文档:
https://github.com/spring-projects/spring-data-elasticsearch