public interface UserRepository extends ElasticsearchRepository{
//按userName like查询 List findByUserNameLike(String userName);
//按role的name属性查询 List findByRolesName(String name);
//按role的name属性查询 两种方式都可以 List findByRoles_Name(String name);
}
4.4:编写service
@Servicepublic class UserStandardService implements StandardService{
@Autowired private UserRepository userRepository;
@Autowired private ElasticsearchTemplate elasticsearchTemplate;
/**
* 批量新增
**/ @Override public void batchAddUser(List users) { if(CollectionUtils.isEmpty(users)) { return ;
}
List queries = Lists.newArrayListWithExpectedSize(users.size());
IndexQuery indexItem = null; for(User user :users) {
indexItem = new IndexQuery();
indexItem.setObject(user);
queries.add(indexItem);
}
elasticsearchTemplate.bulkIndex(queries);
}
@Override public void addUser(User user) {
userRepository.save(user);
} @Override public void deletedUserById(String id) {
userRepository.deleteById(id);
} /**
* 根据userId更新信息
*/ @Override public void updateUser(User user) {
UpdateQuery updateQuery = new UpdateQuery();
updateQuery.setId(user.getId());
updateQuery.setClazz(User.class);
user.setId(null);
UpdateRequest request = new UpdateRequest();
request.doc(JsonUtils.beanToJson(user));
updateQuery.setUpdateRequest(request);
elasticsearchTemplate.update(updateQuery);
} @Override public List queryByUserName(String userName) { return userRepository.findByUserNameLike(userName);
} @Override public List queryByRoleName(Role role) { return userRepository.findByRoles_Name(role.getName());
}
}
4.5:启动
主要要加上 @EnableElasticsearchRepositories 注解;
@EnableElasticsearchRepositories(basePackages = "com.test.els.demo.core.user.repository")@SpringBootApplicationpublic class DemoApplication {
private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
logger.info("start completed !");
}
}