栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

SpringBoot集成ElasticSearch存取数据实战

SpringBoot集成ElasticSearch存取数据实战

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

1、pom文件引入相关jar:

       
            org.springframework.boot
            spring-boot-starter-web
             2.1.6.RELEASE
        

       
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        

2、yml配置es:

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

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

3、客户端取数据配置:

3.1、接收数据的VO实体:

import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;


@Data
@document(indexName = "userInfoindex", type = "userInfo")
@ToString
public class UserInfoEsDto implements Serializable {

    private static final long serialVersionUID = 9881158963867439519L;

    
    @Id
    private String id;
 
    //关联id
    @Field(type = FieldType.Long)
    private Long jid;
    
    @Field(type = FieldType.Long)
    private Long userId;

    
    @Field(type = FieldType.Text)
    private String name;

    
    @ToString.Exclude
    @Field(type = FieldType.Text)
    private String content;

    
    @Field(type = FieldType.Long)
    private Date publishTime;


}

3.2、mapper层接口:

import com.nandao.service.dto.UserInfoEsDto;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

 
public interface UserInfoRepository extends ElasticsearchRepository {

}

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

  import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
 
   @Resource
    private UserInfoRepository userInfoRepository;

   @Override
    public R syncUserInfoByIds(SyncArticleReq req) {
        List list = .......
        if (list != null && !list.isEmpty()) {
            userInfoRepository.saveAll(list);
        }
        return R.ok();
    }


   @Override
    public R listUser(PageParamUtil req,String acceptLanguage)  {
         Sort sort = Sort.by(Direction.DESC, "publishTime");

            Pageable pageable = PageRequest.of(ReqUtil.checkPageNum(req.getPageNum()), 12, sort);

            Page page = userInfoRepository.findAll(pageable);

            int total = page.getTotalPages();
            List list = page.getContent();
            //单个保存和删除接口如下
            // userInfoRepository.save(userInfoEsDto);
            //userInfoRepository.deleteById(String.valueOf(req.getId()));
            ........
    }

    

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

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745102.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号