转载

[ElasticSearch从入门到场景实战]spring boot集成spring data elasticsearch操作elasticsearch

[ElasticSearch从入门到场景实战]spring boot集成spring data elasticsearch操作elasticsearch

[ElasticSearch从入门到场景实战]spring boot集成spring data elasticsearch操作elasticsearch

人生起起伏伏,有风光无限日,也有落魄失魂时,人在低谷时,唯有“熬过去,才会赢”

前言

Elasticsearch的Spring Data是Spring Data项目的一部分,Spring Data Elasticsearch项目提供了对Elasticsearch操作的集成,用于对Elastichsearch文档进行交互并轻松编写访问层代码。

01

整合Spring Data Elasticsearch

创建一个新的springboot项目,并勾选Spring Data Elasticsearch,如图:

[ElasticSearch从入门到场景实战]spring boot集成spring data elasticsearch操作elasticsearch

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

[ElasticSearch从入门到场景实战]spring boot集成spring data elasticsearch操作elasticsearch

等待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

如图:

[ElasticSearch从入门到场景实战]spring boot集成spring data elasticsearch操作elasticsearch

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中还有很多方法可以使用,方法名通俗易懂,大家可以看看,至于聚合查询,下期会来继续讲解的, 感谢大家的支持,谢谢。

小手一抖,点赞就有

[ElasticSearch从入门到场景实战]spring boot集成spring data elasticsearch操作elasticsearch

原文  https://juejin.im/post/5e8ed5abe51d4546be39a3dd
正文到此结束
Loading...