前面几篇分析了elk存取日志相关的操作,今天我们持续分享SpringBoot集成ElasticSearch存取数据实战,在项目开发过程中直接使用。而使用SpringBoot整合Elasticsearch,一般都是使用 SpringData 进行封装的,然后再dao层接口继承ElasticsearchRepository 类,该类实现了很多的方法,比如常用的CRUD方法。
1、pom文件引入相关jar:
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")@ToStringpublic 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
到此实战分享结束,推荐参考一篇文章,可以从另外一个角度测试一下:参考
下篇继续分享es原理,敬请期待!