人生起起伏伏,有风光无限日,也有落魄失魂时,人在低谷时,唯有“熬过去,才会赢”
前言
Elasticsearch的Spring Data是Spring Data项目的一部分,Spring Data Elasticsearch项目提供了对Elasticsearch操作的集成,用于对Elastichsearch文档进行交互并轻松编写访问层代码。
01
整合Spring Data Elasticsearch
创建一个新的springboot项目,并勾选Spring Data Elasticsearch,如图:
创建完成后打开pom看一下,如图:
等待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
02
Spring 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
如图:
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中还有很多方法可以使用,方法名通俗易懂,大家可以看看,至于聚合查询,下期会来继续讲解的, 感谢大家的支持,谢谢。
小手一抖,点赞就有