一、ElasticSearch简介
1.简介2.docker安装 二、elasticsearch操作三、SpringBoot整合Elasticsearch
1.引入maven依赖2. 自动配置3. yml配置文件4.RestHighLevelClient操作elasticsearch5. ElasticsearchRestTemplate 操作elasticsearch6.ElasticsearchRepository操作elasticsearch
一、ElasticSearch简介 1.简介Elasticsearch是一个分布式搜索服务,提供restful API 底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github等大型站点也是采用了Elasticsearch作为其搜索服务;
2.docker安装- 搜索镜像
docker search elasticsearch拉取镜像
docker pull elasticsearch:7.17.1查看镜像
docker images启动镜像
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --name ES01 515ab4fba870验证启动成功
访问:http://192.168.1.XXX:9200,返回以下JSON数据:
{
"name" : "5ab04951e8e0",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "v_6fQnhsQ8i1S0faXaTo2A",
"version" : {
"number" : "7.17.1",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
"build_date" : "2022-02-23T22:20:54.153567231Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
具体操作参考:
elasticsearch官方文档【中文】
或者关注后续的elasticsearch学习文档
2. 自动配置org.springframework.boot spring-boot-starter-data-elasticsearch
- SpringBoot默认支持两种技术和ES进行交互;
在SpringBoot1.X版本默认使用spring-data-elasticsearch和jest两种客户端和elasticsearch进行交互,但是随着jest在2018年停止维护,以及elasticsearch官方大力推荐RestHighLevel API对elasticsearch进行操作,spring官方在2.X版本移除了jest并加入了RestHighLevelClient;org.springframework.boot.autoconfigure在自动配置包下的data.elasticsearch和elasticsearch下分别对应两种ES加护技术;org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration中引入了ElasticsearchRestTemplate和ElasticsearchRepositoryorg.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration引入RestHighLevelClient
spring:
elasticsearch:
uris: http://192.168.1.132:9200
4.RestHighLevelClient操作elasticsearch
@Autowired
RestHighLevelClient restHighLevelClient;
@Test
void contextLoads() throws IOException {
final GetRequest getRequest = new GetRequest();
getRequest.id("1");
getRequest.index("book");
final GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
final String sourceAsString = documentFields.getSourceAsString();
System.out.println("sourceAsString = " + sourceAsString);
}
5. ElasticsearchRestTemplate 操作elasticsearch
@Autowired
ElasticsearchRestTemplate template;
@Test
void contextLoads3() throws IOException {
final Book book = template.get("1", Book.class);
System.out.println("book = " + book);
}
6.ElasticsearchRepository操作elasticsearch
- 编写某个bean的关联ElasticsearchRepository
自定义规则参考spring-data官方文档
public interface BookRepository extends ElasticsearchRepository{ List findByAuthorLike(String author); }
- 操作方法
@Autowired
BookRepository repository;
@Test
void contextLoads() {
for (Book book1 : repository.findAll()) {
System.out.println("book1 = " + book1);
}
}



