elasticsearch CRUD高级查询(java实现)

直接继承接口

import cn.itsource.es.domain.Employee;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface IEmployeeRepository extends ElasticsearchRepository<Employee,Long> {
}

test实现
相关注入

 @Autowired
    private IEmployeeRepository repository;
    //add
    @Test
    public void test() throws Exception {
        Employee employee = new Employee(1L, "Tom", "tom", 11, "tom is asleep");
        Employee employee2 = new Employee(6L, "Jack", "jack", 42, "jack is asleep");
        //id不存在就是新增
        repository.save(employee2);
    }
    //addbatch
    @Test
    public void test2() throws Exception {
        repository.saveAll(Arrays.asList(
                new Employee(2L, "Tom2", "tom2", 18, "tom is asleep"),
                new Employee(3L, "Tom3", "tom3", 31, "tom is asleep"),
                new Employee(4L, "Tom4", "tom4", 37, "tom is asleep")
        ));
    }
    //delete
    @Test
    public void test3() throws Exception {
        repository.deleteById(2L);
    }
  //findById
    @Test
    public void test4() throws Exception {
        System.err.println(repository.findById(3L));
    }
    //findall
    @Test
    public void test5() throws Exception {
        Iterable<Employee> all = repository.findAll();
        all.forEach(e -> {
            System.err.println(e);
        });
    }
   //demo page分页查询
    @Test
    public void test9() throws Exception {
        NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
        //第一页开始,查三条数据
        builder.withPageable(PageRequest.of(0, 3));
        NativeSearchQuery query = builder.build();
        //根据创建条件查询
        Page<Employee> page = repository.search(query);
        //总页数
        System.err.println(page.getTotalPages());
        //数据总条数
        System.err.println(page.getTotalElements());
        List<Employee> content = page.getContent();
        content.forEach(e ->
                System.out.println(e));
    }
    @Test
    public void test10() throws Exception {
        NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
        //创建bool
        BoolQueryBuilder bool = QueryBuilders.boolQuery();
        //must.match可以分词查询
        bool.must(QueryBuilders.matchQuery("username", "jack"));
        builder.withQuery(bool);
        
        NativeSearchQuery query = builder.build();
        //按指定条件查询
        Page<Employee> page = repository.search(query);
        List<Employee> content = page.getContent();
        content.forEach(e -> {
            System.err.println(e);
        });
    }
    //filter
    @Test
    public void test11() throws Exception {
        NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
        BoolQueryBuilder bool = QueryBuilders.boolQuery();
        //过滤查询
        List<QueryBuilder> filter = bool.filter();
        //不分词,相当于模糊查询查找tom%
        filter.add(new TermQueryBuilder("username","tom"));
        //年龄大于10,小于100
        filter.add(QueryBuilders.rangeQuery("age").gte(10).lte(100));
        builder.withQuery(bool);
        //with Sort进行排序
        builder.withSort(SortBuilders.fieldSort("age").order(SortOrder.DESC));
        NativeSearchQuery query = builder.build();
        Page<Employee> page = repository.search(query);
        List<Employee> content = page.getContent();
        content.forEach(e -> {
            System.err.println(e);
        });


    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值