个人随笔
目录
SpringBoot2.0整合 Elasticsearch6实战
2019-03-27 21:19:33

在上一篇博文中,我们了解了Linux安装elasticsearch+kibana运行环境的方法,相信只要根据我的博文,都可以搭建起来的。也基本上了解了一下es的存储结构,现在我们这里舱尝试用SpringBoot2.0去整合elasticsearch,其实也很简单的,毕竟SpringBoot基本上帮我们搞定了配置和环境,只需要加入依赖,配置文件,调用SpringBoot封装好的方法即可。当然如果要深入研究的话,额那是后话。我们开始吧!

1、项目结构


相信大家都很熟悉了,大概介绍一下,UserDao是操作ES文档型数据库的主要类。

2、pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>cn.myforever</groupId>
  4. <artifactId>springboot-elasticsearch</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <parent>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-parent</artifactId>
  9. <version>2.0.0.RELEASE</version>
  10. <relativePath /> <!-- lookup parent from repository -->
  11. </parent>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-web</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  20. </dependency>
  21. </dependencies>
  22. </project>

主要是引入依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  4. </dependency>

3、application.yml

这个配置文件主要是配置elasticsearch服务的一ip和端口,很简单吧。

  1. spring:
  2. data:
  3. elasticsearch:
  4. cluster-nodes: 192.168.144.2:9300

4、UserDao.java

操作es的接口,只需要继承CrudRepository即可

  1. public interface UserDao extends CrudRepository<User, String>{
  2. }

5、User.java

实体类,也就是es中的文档。会用@Document注解指明所属索引以及类型,也就是对应数据库中的数据库和表

  1. @Document(indexName="myes",type="user")
  2. public class User {
  3. @Id
  4. private String id;
  5. private String name;
  6. private int age;
  7. public String getId() {
  8. return id;
  9. }
  10. public void setId(String id) {
  11. this.id = id;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public int getAge() {
  20. return age;
  21. }
  22. public void setAge(int age) {
  23. this.age = age;
  24. }
  25. }

6、TestController.java

  1. @RestController
  2. public class TestController {
  3. @Autowired
  4. private UserDao userDao;
  5. @RequestMapping("/es")
  6. public User es(HttpServletRequest request) {
  7. String id = request.getParameter("id");
  8. User user = new User();
  9. user.setId(id);
  10. user.setName("林文华");
  11. user.setAge(20);
  12. userDao.save(user);
  13. //下面这里返回结果
  14. Optional<User> us = userDao.findById(id);
  15. System.out.println(us.get());
  16. return us.get();
  17. }
  18. }

将UserDao注入进来,然后操作es,这里是根据页面传来的id,将user保存到es中。然后根据ID查询出来返回到页面。

7、ESApp.java

启动类,这里也要用@EnableElasticsearchRepositories(basePackages = “cn.myforever.es.dao”),指定DAO,有点类似于MyBatis的@ScanMapper

  1. @SpringBootApplication
  2. @EnableElasticsearchRepositories(basePackages = "cn.myforever.es.dao")
  3. public class ESApp {
  4. public static void main(String[] args) {
  5. SpringApplication.run(ESApp.class, args);
  6. }
  7. }

8、启动测试

浏览器访问连接:http://localhost:8080/es?id=1
页面返回显示:{“id”:”1”,”name”:”林文华”,”age”:20}
表示成功。

9、GITHUB地址

https://github.com/suibibk/springboot-elasticsearch.git

结语

入门都是很简单的,但是想要深入了解,还是得下点功夫。

 593

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2