我使用的是基于springBoot的ElasticsearchTemplate的实现;此方法相对简单!
1》pom文件如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency>
2》properties里面配置连接ElasticSearch服务器,这里我使用的是单节点
3》创建所操作实体,建立索引
注意:这里省略了getter setter方法
4》基本的增加和查询操作
4.1向es里增加数据
@PostMapping("/add") public String addEsdata(String id,String firstName,String lastName,Integer age,String about){ Employee employee = new Employee(); employee.setId(id); employee.setFirstName(firstName); employee.setLastName(lastName); employee.setAge(age); employee.setAbout(about); employeeRepository.save(employee); System.err.println("add a job"); return "success"; }
4.2查询(支持使用Data JPA的规范做查询操作)
例如:根据id查询
@Autowired private EmployeeRepository employeeRepository;
@GetMapping("/queryById") public Employee query() { Employee accountInfo = employeeRepository.queryEmployeeById("1"); System.err.println(new Gson().toJson(accountInfo)); return accountInfo; }
我这里因为service没有做任何操作 所以service层就不贴出
最后贴一个分页的实现:
/** * 分页 * @param str 查询条件 * @param currentPage 当前页 * @param size 页面大小 * @return */ @GetMapping("/queryBypage") public Page<Employee> queryListBypage(String str, Integer currentPage,Integer size){ if(StringUtils.isEmpty(currentPage)){ currentPage = 1; } if(StringUtils.isEmpty(size)){ size = 10; } Integer offset = (currentPage-1)*size; System.out.println(offset+"---"+size); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(queryStringQuery(str)).withPageable(new PageRequest(offset,size)).build(); return elasticsearchTemplate.queryForPage(searchQuery,Employee.class); }