一、前言
Elasticsearch是一个底层基于Lucene的分布式搜索服务 且提供了Restful风格的API 采用多shard(分片)的方式保证数据安全 还提供了自动resharding的功能
Elasticsearch可以快速存储 搜索和分析海量数据
SpringBoot默认支持两种技术来和Elasticsearch进行交互:Jest和Spring Data Elasticsearch
SpringBoot默认使用Spring Data Elasticsearch模块来进行操作
二、使用
Jest是个很流行的Elasticsearch客户端工具 使用Http和客户端进行交互
Jest默认是不生效的 若要生效 需导入Jest工具包(io.searchbox.client.JestClient
)
1、使用Jest进行操作
首先 是导入Jest的依赖:
注:依赖的版本和Elasticsearch的版本对应
比如 我是6.x版本的Elasticsearch 那就用6.x版本的Jest
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>6.3.1</version>
</dependency>
Elasticsearch的版本可以通过访问ip:9200
后返回的数据中看到:
然后 配置参数:
URI底层默认的是本机的9200端口
spring.elasticsearch.jest.uris=http://111.111.111.111:9200
注:配置URI的时候要带上http请求方式 并不能仅仅ip:端口 否则会报错Illegal character in scheme name
连接成功
给实体类的主键属性加上@JestId
注解:
public class Student {
// 用@JestId注解来标明主键 标注之后 存入Elasticsearch的id值就采用该属性的值了
@JestId
private Integer id;
private String name;
private String hobby;
private String introduce;
[getter和setter...]
}
接下来就是调用了:
给类中注入JestClient:
@Autowired
JestClient jestClient;
给Elasticsearch中索引一个文档: