Elasticsearch所支持的客户端连接方式有两种
在Elasticsearch官方提供了两种基于Http连接的Rest Client
本文教程在Spring Boot框架中使用Rest Client,而Spring Boot已经帮我们集成好了用于ES操作的spring-data-elasticsearch
在spring-data-elasticsearch中我们可以发现一个核心的操作类ElasticsearchRestTemplate,而它是基于Java High Level REST Client的二次封装
在Spring Boot中用于操作ES的Start的Maven pom配置如下,它的version版本受Spring Boot版本控制,所以我们一般不需要指定其版本
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
application.yml配置文件
##如果为elasticsearch配置了安全账号和密码,需要指定其username和password,urls是配置集群内部的主机地址 spring: elasticsearch: rest: uris: http://192.168.31.100:9200 connection-timeout: 10000
到此为止,Spring Boot集成elasticsearch操作,就已经完成了,是不是有点So easy的感觉啦?
这一点操作跟JPA是一模一样的方式,通过在实体类上的注解,而自动创建其mapping
对于实体类里的每一个字段,我们可以为其指定@Field注解,并设置其相关值,而建立对应的mapping映射关,如果没有指定它在ES中映射类型,则会自动为其生成类型。
映射(map)关系也建立好了,现在还需要为每个实体创建一个Repository,而这些操作都是spring为我们提供的,为我们生成最基础的CRUD操作,跟Mybatis-plus的操作是一模一样
我们只需要创建一个接口,通过该接口继承ElasticsearchRepository这个泛型接口,在泛型中指定对应的实体类,是不是有点像是Mybatis-plus中的BaseMapper?
至此,实际上我们一行操作ES的代码都没有编写,就已经建立好了实体与ES中数据的映射关系和在ES中操作实体的CRUD基础操作。
在其它地方需要使用的时候,直接注入这个Repository接口就行,Spring会为我们自动生成代理类。