elasticsearch_spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch
Spring Data家族对Elasticsearch也进行了封装支持,使用spring-data-elasticsearch,就像使用spring-data-jpa、spring-data-solr、spring-data-redis、spring-data-mongodb等一样操作简单,它们封装的方法类似,提供的接口格式都基本相同,所以开发流程也基本是一样的。
spring-data-elasticsearch 是 Spring Data 的 Community modules 之一,是 Spring Data 对 Elasticsearch 引擎的实现。
Elasticsearch 默认提供轻量级的 HTTP Restful 接口形式的访问。相对来说,使用 HTTP Client 调用也很简单。但 spring-data-elasticsearch 可以更快的支持构建在 Spring 应用上,比如在 application.properties 配置 ES 节点信息和 spring-boot-starter-data-elasticsearch 依赖,直接在 Spring Boot 应用上使用。
1. ElasticsearchRepository 接口
ElasticsearchRepository 是Elasticsearch 通用的存储接口的一种默认实现。Spring 根据接口定义的方法名,具体执行对应的数据存储实现。
ElasticsearchRepository 继承 ElasticsearchCrudRepository ,ElasticsearchCrudRepository 继承 PagingAndSortingRepository,所以一般 CRUD 带分页已经支持。
先看看 ElasticsearchRepository 接口的定义。
@NoRepositoryBean
public interface ElasticsearchRepository extends ElasticsearchCrudRepository {
S index(S var1);
Iterable search(QueryBuilder var1);
Page search(QueryBuilder var1, Pageable var2);
Page search(SearchQuery var1);
Page searchSimilar(T var1, String[] var2, Pageable var3);
void refresh();
Class getEntityClass();
}
ElasticsearchRepository 继承关系如下所示。除了有CRUD的基本功能之外,还有分页和排序。
/**
* 接口关系:
* ElasticsearchRepository --> ElasticsearchCrudRepository --> PagingAndSortingRepository --> CrudRepository --> Repository
*/
这里的Repository相当于DAO,操作MySQL 还是elasticsearch都是一样的。
2. spring-data-elasticsearch 依赖包
pom文件中导入依赖。
org.springframework.boot
spring-boot-starter-data-elasticsearch
org.springframework.boot
spring-boot-starter-parent
2.1.7.RELEASE
如下是相关jar版本以及依赖关系。
Spring Data Elasticsearch 和 Elasticsearch 版本之间的兼容性,可以参考如下表格:
https://github.com/spring-projects/spring-data-elasticsearch
如果想要使用最新的 Elasticsearch,可以通过默认的Java High Level REST Client API调用去实现。
3. 添加Elasticsearch相关配置项
修改application.yml配置文件,添加Elasticsearch 节点配置。
spring:
data:
elasticsearch:
cluster-nodes: 127.0.0.1:9300
默认 9300 是 Java 客户端的端口。9200 是支持 Restful HTTP 的接口。
cluster-name:elasticsearch 集群名。(默认值: elasticsearch)
cluster-nodes:集群节点地址列表,用逗号分隔。
repositories.enabled: 开启 Elasticsearch 仓库。(默认值:true)
4. Elasticsearch 数据操作层
接口只要继承 ElasticsearchRepository 类即可。
默认会提供很多实现,比如 CRUD 和搜索相关的实现。类似于 JPA 读取数据,是使用 CrudRepository 进行操作 ES 数据。支持的默认方法有: count(), findAll(), findOne(ID), delete(ID), deleteAll(), exists(ID), save(DomainObject), save(Iterable)。
完整代码,可以参考如下链接:
Elasticsearch 6.4.3 和Spring Boot 2.1.7集成-实战演练完整代码
elasticsearch_spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch相关推荐
- Spring基础:快速入门spring boot(7):spring boot 2.0简单介绍
从这篇文章开始以spring boot2为主要版本进行使用介绍. Spring boot 2特性 spring boot2在如下的部分有所变化和增强,相关特性在后续逐步展开. 特性增强 基础组件升级: ...
- [快速入门]Spring Boot+springfox-swagger2 之RESTful API自动生成和测试
Swagger是自动生成 REST APIs文档的工具之一.Swagger支持jax-rs, restlet, jersey.springfox-swagger是Spring生态的Swagger解决方 ...
- Elasticsearch实战篇——Spring Boot整合ElasticSearch
2019独角兽企业重金招聘Python工程师标准>>> 当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来 ...
- ElasticSearch实战篇 - Spring Boot 整合 ElasticSearch
点击上方 Java后端,选择 设为星标 优质文章,及时送达 作者:冯文议 链接:segmentfault.com/a/1190000018625101 当前Spring Boot很是流行,包括我自己, ...
- win7 x64 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发--爬取IThome热评(一)
因为工作需要,我准备在win7 x64系统上基于springboot +elasticsearch+redis搭建全文索引服务器. 1. elasticsearch安装比较方便,直接去官网下载了ela ...
- ELK之ElasticSearch快速入门
ElasticSearch快速入门 一.简介 二.下载 三.启动 4.基本概念 5. 一.简介 官网:https://www.elastic.co/ ElasticSearch是Elastic Sta ...
- Elasticsearch快速入门2 - 高级查询功能
我们在Elasticsearch快速入门1中详细介绍了ES的安装.基本概念和一些基本的REST Api请求,在这篇入门(2)中,我们继续介绍ES的高级查询功能. 为了说明ES强大的搜索功能,我们还以上 ...
- boot入门思想 spring_(第一讲)Spring Initializr-快速入门Spring Boot的最好选择
1讲:Spring Initializr-快速入门Spring Boot的最好选择 Spring Initializr [http://start.spring.io/]是引导你快速构建Spring ...
- 快速上手 Spring Boot 项目开发
1. 从零开始 Spring Boot 工程 Spring Boot 可以快速构建基于 Spring 框架的 JavaWeb 应用,快速整合包括视图层.MVC架构以及持久化层在内的各种框架,不需 ...
最新文章
- php函数,static,globalkeyword及三种变量作用域
- 我要做一个什么样的程序员
- at( ) [ ]
- NAVICAT连接oracle数据库的时候出现ora-01033
- Spring MVC 入门--Hello World
- 世界杯直播背后:腾讯云极速高清技术部署实录
- Java中的PriorityBlockingQueue
- fcpx调整图层_【FCPX萌新系列】新手常遇到的4个基础调色问题
- Smarty中直接加JS代码和将JS代码写在literal标签里
- C#中构造函数和析构函数的用法
- C++数据范围及字节对照表
- 微信小程序文档api
- 802.11--802.11n协议 PHY
- keil cannot reset target shutting 新解决办法
- SIM卡被猫吃了,1860电话录音
- 制作统一样式的H5视频播放器
- C# Parellel.For 和 Parallel.ForEach
- C语言和汇编语言函数调用
- C# 汉字与拼音互转
- linux下socket编程处理TCP粘包