在上一篇博文中,我们了解了Linux安装elasticsearch+kibana运行环境的方法,相信只要根据我的博文,都可以搭建起来的。也基本上了解了一下es的存储结构,现在我们这里舱尝试用SpringBoot2.0去整合elasticsearch,其实也很简单的,毕竟SpringBoot基本上帮我们搞定了配置和环境,只需要加入依赖,配置文件,调用SpringBoot封装好的方法即可。当然如果要深入研究的话,额那是后话。我们开始吧!
1、项目结构
相信大家都很熟悉了,大概介绍一下,UserDao是操作ES文档型数据库的主要类。
2、pom.xml
<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>
<groupId>cn.myforever</groupId>
<artifactId>springboot-elasticsearch</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
</dependencies>
</project>
主要是引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
3、application.yml
这个配置文件主要是配置elasticsearch服务的一ip和端口,很简单吧。
spring:
data:
elasticsearch:
cluster-nodes: 192.168.144.2:9300
4、UserDao.java
操作es的接口,只需要继承CrudRepository即可
public interface UserDao extends CrudRepository<User, String>{
}
5、User.java
实体类,也就是es中的文档。会用@Document注解指明所属索引以及类型,也就是对应数据库中的数据库和表
@Document(indexName="myes",type="user")
public class User {
@Id
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
6、TestController.java
@RestController
public class TestController {
@Autowired
private UserDao userDao;
@RequestMapping("/es")
public User es(HttpServletRequest request) {
String id = request.getParameter("id");
User user = new User();
user.setId(id);
user.setName("林文华");
user.setAge(20);
userDao.save(user);
//下面这里返回结果
Optional<User> us = userDao.findById(id);
System.out.println(us.get());
return us.get();
}
}
将UserDao注入进来,然后操作es,这里是根据页面传来的id,将user保存到es中。然后根据ID查询出来返回到页面。
7、ESApp.java
启动类,这里也要用@EnableElasticsearchRepositories(basePackages = “cn.myforever.es.dao”),指定DAO,有点类似于MyBatis的@ScanMapper。
@SpringBootApplication
@EnableElasticsearchRepositories(basePackages = "cn.myforever.es.dao")
public class ESApp {
public static void main(String[] args) {
SpringApplication.run(ESApp.class, args);
}
}
8、启动测试
浏览器访问连接:http://localhost:8080/es?id=1
页面返回显示:{“id”:”1”,”name”:”林文华”,”age”:20}
表示成功。
9、GITHUB地址
https://github.com/suibibk/springboot-elasticsearch.git
结语
入门都是很简单的,但是想要深入了解,还是得下点功夫。