直接继承接口
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);
});
}