pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
application.propertise文件
# ELASTICSEARCH (ElasticsearchProperties)
spring.data.elasticsearch.cluster-name=elasticsearch 默认的是这个名字
spring.data.elasticsearch.cluster-nodes=localhost:9300 多个用逗号分隔
spring.data.elasticsearch.repositories.enabled=true
entity类
@Document(indexName ="liang" ,type= "user")//把该类进行索引,其中indexName为索引名称,type为类型,后面的值都可以随便填
@Data //不用写get set、方法,可以不要
public class User {
@Id //索引的id
private String id;
private String empname;
//要有空的构造方法
public User(){}
public User(String id, String empname) {
this.id = id;
this.empname = empname;
}
}
UserRepository类
public interface UserRepository extends ElasticsearchRepository<User, String> {
}
这个类跟JPA里的JAPRepository一样里面有很多已经实现的方法,继承该类就可用,因为里面已经有默认的实现类,你也可以在UserRepository中定义自己的方法,可用@query注解的方式,我这里什么方法都没有。
service类
@Service
public class Userservice {
@Autowired
private UserRepository userRepository;
public User find(String id){
//
System.out.println(".............................");
return null;
}
public void save(User user){
userRepository.save(user);//插入一个user
System.out.println("success.........................................");
}
启动类
@SpringBootApplication
@ComponentScan(basePackages={"com.example.demo"})
@EnableElasticsearchRepositories(basePackages = {"com.example.demo.dao"})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Resource
private Userservice userservice;
@Test
public void contextLoads() {
}
@Test
public void testF(){
User user=userservice.find("4");
System.out.println(user.getEmpname());
}
@Test
public void testSave(){
User user=new User("4","q11123");
userservice.save(user);
System.out.println("1223" +
"......................");
}
就这样就可以插入数据了。其他版本的很多独有ESConfig类,把port、等进行设置,是因为他们用的不是SpringBoot+Spring-data,这里是会自动进行设置的,上面的配置文件,也可以不配,这样的话就不用下一个Elasticsearch了,这时生成的索引会在项目路径下生成一个叫data的文件夹,当你发现sava成功,但是localhost:9200/../../ 没有数据就是你的配置之文件不行。
当你的日志报链接有关的问题,除了没开Elasticsearch外,就是客户端和服务端的Elasticsearch版本对不上。