![v2-f4dc5d09bd4e2f042e3186f32fc93513_b.gif](http://img-03.proxy.5ce.com/view/image?&type=2&guid=f4d29f55-252f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-f4dc5d09bd4e2f042e3186f32fc93513_b.gif)
![v2-941c137b31f91764e4a6fd43322723e7_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=f4d29f55-252f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-941c137b31f91764e4a6fd43322723e7_b.png)
人生起起伏伏,有风光无限日,也有落魄失魂时,人在低谷时,唯有“熬过去,才会赢”
前言
Elasticsearch的Spring Data是Spring Data项目的一部分,Spring Data Elasticsearch项目提供了对Elasticsearch操作的集成,用于对Elastichsearch文档进行交互并轻松编写访问层代码。
01整合Spring Data Elasticsearch
创建一个新的springboot项目,并勾选Spring Data Elasticsearch,如图:
![v2-79e5e3818afdd3504996f15e88314d8d_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=f4d29f55-252f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-79e5e3818afdd3504996f15e88314d8d_b.jpg)
创建完成后打开pom看一下,如图:
![v2-a49a46fee2ef8a3e1da39fdc95b98d71_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=f4d29f55-252f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-a49a46fee2ef8a3e1da39fdc95b98d71_b.jpg)
等待maven拉下所有依赖,然后打开application.properties,添加以下几个配置:
1、spring.data.elasticsearch.repositories.enabled=true(打开elasticsearch仓库,默认true)
2、spring.elasticsearch.rest.uris=elasticsearch的ip:端口或elasticsearch域名(连接elasticsearch地址)
3、spring.data.elasticsearch.client.reactive.connection-timeout=3000(连接elasticsearch超时时间)
4、spring.data.elasticsearch.client.reactive.socket-timeout=3000(套接字超时时间)
如下:
spring.application.name=elasticSearchDemo
server.port=8080
# 开启es仓库
spring.data.elasticsearch.repositories.enabled=true
spring.elasticsearch.rest.uris=http://127.0.0.1:9200
spring.data.elasticsearch.client.reactive.connection-timeout=3000
spring.data.elasticsearch.client.reactive.socket-timeout=3000
02Spring Data Elasticsearch核心
1、@Document注解
属性:
1、indexName 索引名称
2、refreshInterval 索引刷新间隔时间
3、indexStoreType 索引存储类型,一般使用niofs
4、shards 分片数,一般等于elasticsearch节点数
5、replicas 副本数,一般等于shards - 1
2、@Id注解 属性级别注解,标注变量映射到index中document的id字段
3、ElasticsearchRepository 被继承类,实现jpa对指定index操作
4、ElasticsearchRestTemplate 操作类,用于对elasticsearch的操作
03实现操作elasticsearch的增删改查
1、创建一个DemoDO类,用于映射elasticsearch中的index
1、类上添加注解:
@Document(indexName = "demo", refreshInterval = "30s", indexStoreType = "niofs", shards = 1, replicas = 0)
2、添加属性:id、name、age、nickName、device、lastLoginDate
3、在属性id上添加注解:@Id
4、添加get/set和toString
如图:
![v2-198049f8eff2d18ac4ff9eb42bb0309f_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=f4d29f55-252f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-198049f8eff2d18ac4ff9eb42bb0309f_b.jpg)
2、创建一个DemoRepository接口,用于实现jpa操作
1、继承ElasticsearchRepository
2、ElasticsearchRepository第一个类型为DemoDO,第二个类型为String,代表该接口用于操作DemoDO的indexName所写的索引,id为String类型(elasticsearch的id默认为string类型)
如下:
package com.elasticsearch.demo.repository;
import com.elasticsearch.demo.dataobject.DemoDO;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface DemoRepository extends ElasticsearchRepository<DemoDO, String> {
}
完成这两步以后,就已经完成准备工作了。
接下来我们利用DemoRepository来操作elasticsearch:
1、创建单元测试类
@SpringBootTest
class ElasticSearchDemoApplicationTests
2、注入DemoRepository
@Autowired
private DemoRepository repository;
3、新增save方法
@Test
public void save() {
DemoDO demoDO = new DemoDO();
demoDO.setDevice("phone");
demoDO.setAge((int) (Math.random() * 10 + 1));
demoDO.setName(UUID.randomUUID().toString());
demoDO.setNickName(UUID.randomUUID().toString());
demoDO.setLastLoginDate(new Date());
repository.save(demoDO);
}
3、新增修改方法(其实就是demoDO设置了id的值,就是为修改)
@Test
public void update() {
DemoDO demoDO = new DemoDO();
demoDO.setId("");
demoDO.setDevice("phone");
demoDO.setAge((int) (Math.random() * 10 + 1));
demoDO.setName(UUID.randomUUID().toString());
demoDO.setNickName(UUID.randomUUID().toString());
demoDO.setLastLoginDate(new Date());
repository.save(demoDO);
}
4、新增查找方法
@Test
public void query() {
Iterable<DemoDO> demoDOIterator = repository.findAll();
}
5、新增删除方法
@Test
public void deleteAll() {
repository.deleteAll();
}
总 结
目前elasticsearch操作的资料还是比较少的,希望我的文章可以帮到大家提示和解决日常工作中的问题,jpa中还有很多方法可以使用,方法名通俗易懂,大家可以看看,至于聚合查询,下期会来继续讲解的,感谢大家的支持,谢谢。
![v2-5cea1e09f58e96c886eaafb228eecca6_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=f4d29f55-252f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-5cea1e09f58e96c886eaafb228eecca6_b.jpg)
小手一抖,点赞就有