当前位置:   article > 正文

SpringBoot集成ElasticSearch存取数据实战_elasticsearch+springboot list怎样存放

elasticsearch+springboot list怎样存放

前面几篇分析了elk存取日志相关的操作,今天我们持续分享SpringBoot集成ElasticSearch存取数据实战,在项目开发过程中直接使用。而使用SpringBoot整合Elasticsearch,一般都是使用 SpringData 进行封装的,然后再dao层接口继承ElasticsearchRepository 类,该类实现了很多的方法,比如常用的CRUD方法。

1、pom文件引入相关jar:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <version>2.1.6.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  9. </dependency>

2、yml配置es:

  1. spring
  2. data:
  3. elasticsearch:
  4. cluster-name: nd-es-1 #集群名。(默认值: elasticsearch)
  5. #cluster-nodes: es-1.cs-ys2.nandao.io:9300
  6. cluster-nodes: 127.0.0.1:9300 #集群节点地址列表,用逗号分隔。如果没有指定,就启动一个客户端节点。
  7. repositories:
  8. enabled: true #开启 Elasticsearch 仓库。(默认值:true。)

注意: 9300 是 Java 客户端的端口。9200 是支持 Restful HTTP 的接口。

3、客户端取数据配置:

3.1、接收数据的VO实体:

  1. import java.io.Serializable;
  2. import java.util.Date;
  3. import lombok.Data;
  4. import lombok.ToString;
  5. import org.springframework.data.annotation.Id;
  6. import org.springframework.data.elasticsearch.annotations.Document;
  7. import org.springframework.data.elasticsearch.annotations.Field;
  8. import org.springframework.data.elasticsearch.annotations.FieldType;
  9. /**
  10. * @author nandao 2020/9/27
  11. */
  12. @Data
  13. @Document(indexName = "userInfoindex", type = "userInfo")
  14. @ToString
  15. public class UserInfoEsDto implements Serializable {
  16. private static final long serialVersionUID = 9881158963867439519L;
  17. /**
  18. * es id
  19. */
  20. @Id
  21. private String id;
  22. //关联id
  23. @Field(type = FieldType.Long)
  24. private Long jid;
  25. /**
  26. * 用户ID
  27. */
  28. @Field(type = FieldType.Long)
  29. private Long userId;
  30. /**
  31. * 用户名称
  32. */
  33. @Field(type = FieldType.Text)
  34. private String name;
  35. /**
  36. * 内容
  37. */
  38. @ToString.Exclude
  39. @Field(type = FieldType.Text)
  40. private String content;
  41. /**
  42. * 时间
  43. */
  44. @Field(type = FieldType.Long)
  45. private Date publishTime;
  46. }

3.2、mapper层接口:

  1. import com.nandao.service.dto.UserInfoEsDto;
  2. import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
  3. public interface UserInfoRepository extends ElasticsearchRepository<UserInfoEsDto,String> {
  4. }

3.3、业务层保持和查询核心伪代码:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.data.domain.Page;
  4. import org.springframework.data.domain.PageRequest;
  5. import org.springframework.data.domain.Pageable;
  6. import org.springframework.data.domain.Sort;
  7. import org.springframework.data.domain.Sort.Direction;
  8. import org.springframework.data.redis.core.StringRedisTemplate;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import org.springframework.util.CollectionUtils;
  12. @Resource
  13. private UserInfoRepository userInfoRepository;
  14. @Override
  15. public R syncUserInfoByIds(SyncArticleReq req) {
  16. List<UsserInfoEsDto> list = .......
  17. if (list != null && !list.isEmpty()) {
  18. userInfoRepository.saveAll(list);
  19. }
  20. return R.ok();
  21. }
  22. @Override
  23. public R listUser(PageParamUtil req,String acceptLanguage) {
  24. Sort sort = Sort.by(Direction.DESC, "publishTime");
  25. Pageable pageable = PageRequest.of(ReqUtil.checkPageNum(req.getPageNum()), 12, sort);
  26. Page<UsserInfoEsDto> page = userInfoRepository.findAll(pageable);
  27. int total = page.getTotalPages();
  28. List<UsserInfoEsDto> list = page.getContent();
  29. //单个保存和删除接口如下
  30. // userInfoRepository.save(userInfoEsDto);
  31. //userInfoRepository.deleteById(String.valueOf(req.getId()));
  32. ........
  33. }

 到此实战分享结束,推荐参考一篇文章,可以从另外一个角度测试一下:参考

下篇继续分享es原理,敬请期待!

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/936242
推荐阅读
相关标签
  

闽ICP备14008679号