文章目录
本文讲述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访问下:
- 添加数据:
- 查询: