springboot整合es_[ElasticSearch从入门到场景实战]spring boot集成SpringData操作es

v2-f4dc5d09bd4e2f042e3186f32fc93513_b.gif

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

创建完成后打开pom看一下,如图:

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

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

小手一抖,点赞就有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值