ElasticSearch系列(二)springboot中集成使用ElasticSearch的Demo


本文讲述springboot中集成使用ElasticSearch的步骤,注意,需要安装启动好ElasticSearch环境;
如果还有安装好环境,可以按照此链接步骤进行: 《ElasticSearch系列(一)linux环境ElasticSearch+Kibana(6.8.2)下载安装启动步骤》

1.创建springboot web项目

这个比较简单,不详细说了。
注意本文使用springboot版本是2.2.0,此本版内部依赖的ES客户端版本是6.8.1

2.在pom文件中增加es依赖

<!--es-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
 </dependency>

版本号就是跟随springboot版本;

注意:
如果es服务安装的是es7及以上版本,需要springboot版本为2.2.0及以上,不然启动项目会提示failed load nodes…
本文服务端安装的是ES7.3.0,支持的客户端版本最低是6.8.0,所以需要springboot依赖的es版本超过6.8.0。

3.配置appication.yml

spring:
  data:
    elasticsearch:
      cluster-name: myes
      cluster-nodes: 192.168.32.129:9300
  • 注意端口号是9300,不是9200;
  • cluster-name是集群名称,需要在ES的config配置文件中指定,不然启动项目访问接口时,会报如下错误:
    None of the configured nodes are available

4.编写个实体类对象,比如UserEntity.java

@Document(indexName = "myindex", type = "user")
@Data
public class UserEntity {
    @Id
    private String id;
    private String name;
    private int sex;
    private int age;
}

其中,@Document注解,指定了es搜索引擎的索引和类型。

Elasticsearch和关系数据库概念对应关系:

关系数据库 => 数据库
Elasticsearch => 索引(Index) 类型(type) 文档(Docments) 字段(Fields)

注意:
ES7中,已经废弃了type的概念,默认使用_doc作为类型名;也就是一个索引中,只能存在一个类型(一个表),那就是 _toc。
创建mapping的时候,不用指定type这一层级,否则报错。

5.编写dao层接口

@Repository
public interface UserRepository extends CrudRepository<UserEntity, String> {
}

@Repository注解可以使此接口被spring扫描到,如果不加此注解,也可以手动配置dao层的包扫描路径:

@SpringBootApplication
//添加dao层包扫描
@EnableElasticsearchRepositories(basePackages = "com.example.demo.es.dao")
public class DemoApplication extends SpringBootServletInitializer {

6.编写controller层接口

@RestController
public class EsController {
    @Autowired
    private UserRepository userReposiory;

    @RequestMapping("/addUser")
    public UserEntity addUser(@RequestBody UserEntity user) {
        return userReposiory.save(user);
    }

    @RequestMapping("/findUser")
    public Optional<UserEntity> findUser(String id) {
        return userReposiory.findById(id);
    }
}

7.最后启动项目,使用postman访问下:

  • 添加数据:
    在这里插入图片描述
  • 查询:
    在这里插入图片描述
发布了62 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/csdn_20150804/article/details/98444453