SpringBoot 集成elasticsearch 实现增删改查

1、pom.xml文件中导入依赖

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            <version>2.5.0</version>
        </dependency>

2、在项目的application.yml文件中添加配置信息

spring:
  elasticsearch:
    rest:
      uris: 192.168.136.133:9200
      username: admin
      password: admin

3、准备对应的实体类以及对应的mapper接口

1、使用到的jar包

 <!-- lombok  jar包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--  JSON解析  -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.70</version>
        </dependency>

 2、准备测试实体类

package com.example.pojo;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "user")   //不可少,表示es中的文档名称
public class User {

    @Id  //es文档主键  不可少
    private Long userId;

    private String username;

    private String password;

}

3、对应的mapper接口     两个泛型的值分别是  实体类和对应实体类的主键类型

package com.example.mapper;

import com.example.pojo.User;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface UserRepository extends ElasticsearchRepository<User,Long> {
}

4、书写测试类

1、向es中添加数据

    @Autowired  //注入定义的接口
    private UserRepository userRepository;


    @Test   //一次添加一个
    public void Test02() {
        User user = new User(1, "张三", "11223");
        userRepository.save(user);
    }


    @Test   //一次添加多个
    public void test002(){
        List<User> userList = new ArrayList<>();
        userRepository.saveAll(userList);  
    }

2、在es中删除数据

    @Test
    public void Test04(){

        //一次删除一个
        User user = new User(1L, "张三", "11223");
        userRepository.delete(user);


        //一次删除一个  根据id删除
        userRepository.deleteById(1L);


        //一次删除多个  
        List<User> userList = new ArrayList<>();
        userRepository.deleteAll(userList);
        
        
        //清空整个文档的数据并删除这个文档
        userRepository.deleteAll();
        
    }

3、修改es中存在的数据  使用的仍然是save方法,当id一样时,会覆盖原来的数据,因此可用于修改数据。

 @Test
    public void Test05(){
        User user = new User(1L, "张三1111", "11223");
        userRepository.save(user);
    }

4、查询es中的数据

    @Test
    public void getAll() {

        //创建布尔查询的对象
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

        //通过定义的对象,添加查询的条件
        boolQueryBuilder.must(QueryBuilders.termQuery("userId",1));
        //boolQueryBuilder.must(QueryBuilders.termQuery("username","张三"));
        //boolQueryBuilder.must(QueryBuilders.termQuery("username","张三1"));

        //分页设置
        PageRequest.of(1,10);


        //编译查询的对象
        NativeSearchQuery build = new NativeSearchQueryBuilder()
                .withQuery(boolQueryBuilder).build();

        //使用elasticsearchRestTemplate进行查询
        SearchHits<User> search = elasticsearchRestTemplate.search(build, User.class);
        System.err.println(search.getSearchHits().size());


        //将得到的数据进行转换,
        List<User> userList = search.getSearchHits().stream().map(org.springframework.data.elasticsearch.core.SearchHit::getContent).collect(Collectors.toList());


    }

以上是SpringBoot集成elasticsearch,进行增删改查的基本用法。

在本es的数据查询中,默认es只查询文档中的前10000条数据,所以使用此方法也是只能查出10000条数据。

如果需要es查询所有数据,可查看

CSDN

谢谢关注!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值