springboot 使用 Spring Data Elasticsearch 添加文档、删除文档、简单查询文档

上接:springboot 使用 Spring Data Elasticsearch 操作 Elasticsearch 7.9-创建工程

文档操作

service类

package day1.service;

import day1.dao.ToutiaoDao;
import day1.entity.Toutiao;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class ESToutiaoDocSrvImpl {
    @Resource
    private ToutiaoDao toutiaoDao;
    @Resource
    private ElasticsearchRestTemplate template;
    /**
     * 新增
     */
    public void save(Toutiao toutiao){
        // 方法一
        //toutiaoDao.save(toutiao);
        // 方法二
        template.save(toutiao);
    }
    /**
     * 修改和新增是同一个接口,但是,要传入 id
     */
    public void update(Toutiao toutiao){
        save(toutiao);
    }
    //根据 id 查询
    public Toutiao findById(String id){
        // 方法一
        //Toutiao toutiao = toutiaoDao.findById(id).get();
        // 方法二
        Toutiao toutiao=template.get(id,Toutiao.class);
        return toutiao;
    }
    //删除
    public void delete(String id){
        // 方法一
//        Toutiao toutiao = new Toutiao();
//        toutiao.setId(id);
//        toutiaoDao.delete(toutiao);
        // 方法二
        //toutiaoDao.deleteById(id);
        // 方法三
        template.delete(id, Toutiao.class);// 返回id
    }
    //批量新增
    public void saveAll(List<Toutiao> list){
        // 方法一
        //toutiaoDao.saveAll(list);
        // 方法二
        template.save(list);
    }

    /**
     * 分页查询
     * @param currentPage 当前页,第一页从 0 开始,1 表示第二页
     * @param pageSize 每页显示多少条
     * @return
     */
    public Page<Toutiao> findPage(int currentPage, int pageSize){
        //设置排序(排序方式,正序还是倒序,排序的 id)
        Sort sort = Sort.by(Sort.Direction.DESC,"date");
        //设置查询分页
        PageRequest pageRequest = PageRequest.of(currentPage, pageSize,sort);
        //分页查询
        Page<Toutiao> page = toutiaoDao.findAll(pageRequest);
        return page;
    }

    /**
     * 查询所有数据
     * 注意:由于数据较多,可能引发崩溃,使用较少
     * @return
     */
    public Iterable<Toutiao> findAll(){
        Iterable<Toutiao> it = toutiaoDao.findAll();
        return it;
    }
}

springboot 测试类

package test;


import day1.Main;
import day1.entity.Toutiao;
import day1.service.ESToutiaoDocSrvImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.test.context.junit4.SpringRunner;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Main.class)
public class TestESToutiaoDocSrvImpl {
    @Autowired
    private ESToutiaoDocSrvImpl service;
    /**
     * 新增
     */
    @Test
    public void save(){
        Toutiao toutiao = new Toutiao();
        toutiao.setId("123");
        toutiao.setTitle("华为手机");
        toutiao.setContent("华为手机就是好");
        toutiao.setType("手机");
        toutiao.setAuthor("路人甲");
        toutiao.setLike(50);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        String date=sdf.format(new Date());
        toutiao.setDate(date);
        service.save(toutiao);

        System.out.println("保存成功!");
    }
    //修改和新增是同一个接口,区分的依据就是 id
    @Test
    public void update(){
        Toutiao toutiao = new Toutiao();
        toutiao.setId("123");
        toutiao.setTitle("华为手机 mate 100");
        toutiao.setContent("华为手机好,very good");
        toutiao.setAuthor("路人甲");
        toutiao.setLike(50);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        String date=sdf.format(new Date());
        toutiao.setDate(date);
        service.update(toutiao);
    }
    //根据 id 查询
    @Test
    public void findById(){
        Toutiao toutiao = service.findById("123");
        System.out.println(toutiao);
    }
    @Test
    public void findAll(){
        Iterable<Toutiao> it = service.findAll();
        for (Toutiao item : it) {
            System.out.println(item);
        }
    }
    //删除
    @Test
    public void delete(){
        service.delete("123");
    }
    //批量新增
    @Test
    public void saveAll(){
        List<Toutiao> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            Toutiao product = new Toutiao();
            product.setTitle("["+i+"]小米手机");
            list.add(product);
            System.out.println(product);
        }
        service.saveAll(list);
    }
    //分页查询
    @Test
    public void findByPageable(){
        //分页查询
//        Page<Toutiao> page = service.findPage(0, 5);
        Page<Toutiao> page = service.findPage(1, 5);
        for (Toutiao item : page.getContent()) {
            System.out.println(item);
        }
    }
}