SpringDataElasticsearch4.0(整合SpringBoot)
Spring Data Elasticsearch使⽤
简介:
Spring Data Elasticsearch是Spring Data项⽬下的⼀个⼦模块。
查看 Spring Data的官⽹:
Spring Data的使命是为数据访问提供熟悉且⼀致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性。
它使得使⽤数据访问技术,关系数据库和⾮关系数据库,map-reduce框架和基于云的数据服务变得容易。
这是⼀个总括项⽬,其中包含许多特定于给定数据库的⼦项⽬。
这些令⼈兴奋的技术项⽬背后,是由许多公司和开发⼈员合作开发的。
springboot中文Spring Data 的使命是给各种数据访问提供统⼀的编程接⼝,不管是关系型数据库(如MySQL),还是⾮关系数据库(如Redis),或者类似Elasticsearch这样的索引数据库。从⽽简化开发⼈员的代码,提⾼开发效率。
包含很多不同数据操作的模块:
Spring Data Elasticsearch的页⾯:
特征:
⽀持Spring的基于@Configuration的java配置⽅式,或者XML配置⽅式
提供了⽤于操作ES的便捷⼯具类**ElasticsearchTemplate**。包括实现⽂档到POJO之间的⾃动智能映射。
利⽤Spring的数据转换服务实现的功能丰富的对象映射
基于注解的元数据映射⽅式,⽽且可扩展以⽀持更多不同的数据格式
根据持久层接⼝⾃动⽣成对应实现⽅法,⽆需⼈⼯编写基本操作代码(类似mybatis,根据接⼝⾃动得到实现)。当然,也⽀持⼈⼯定制查询
创建Demo⼯程:
使⽤Spring Data Elasticsearch 版本必须对应elasticsearch服务实例,否则会出现⼀些报错信息
新建⼀个demo,学习Elasticsearch
pom核⼼依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
spring:
elasticsearch:
rest:
uris: localhost:9200
#username:
#password:
Spring Data Elasticsearch注解:
Spring Data通过注解来声明字段的映射属性,有下⾯的三个注解:
@Document 在类级别应⽤,以指⽰该类是映射到数据库的候选对象。最重要的属性是:
indexName:对应索引库名称
type:映射类型。如果未设置,则使⽤⼩写的类的简单名称。(从版本4.0开始不推荐使⽤)
shards:索引的分⽚数
replicas:索引的副本数
refreshIntervall :索引的刷新间隔。⽤于索引创建。默认值为“ 1s”。
indexStoreType: 索引的索引存储类型。⽤于索引创建。默认值为“ fs”。
createIndex: 配置是否在存储库引导中创建索引。默认值为true。
versionType: 版本管理的配置。默认值为EXTERNAL。
@Id 作⽤在成员变量,标记⼀个字段作为id主键
@Transient :默认情况下,存储或检索⽂档时,所有字段都映射到⽂档,此注释不包括该字段。
@PersistenceConstructor: 标记从数据库实例化对象时要使⽤的给定构造函数,甚⾄是受保护的程序包。构造函数参数按名称映射到检索到的Document中的键值。
@Field 作⽤在成员变量,标记为⽂档的字段,并指定字段映射属性:
type:字段类型,取值是枚举:FieldType
index:是否索引,布尔类型,默认是true
store:是否存储,布尔类型,默认是false
analyzer:插⼊是使⽤分词器名称
searchAnalyzer :查询是使⽤分词器
1. analyzer和search_analyzer的区别
分析器主要有两种情况会被使⽤:
第⼀种是插⼊⽂档时,将text类型的字段做分词然后插⼊倒排索引,
第⼆种就是在查询时,先对要查询的text类型的输⼊做分词,再去倒排索引搜索
如果想要让索引和查询时使⽤不同的分词器,ElasticSearch也是能⽀持的,只需要在字段上加上search_analyzer参数
在索引时,只会去看字段有没有定义analyzer,有定义的话就⽤定义的,没定义就⽤ES预设的
在查询时,会先去看字段有没有定义search_analyzer,如果没有定义,就去看有没有analyzer,再没有定义,才会去使⽤ES预设的elasticsearchTemplate索引操作:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。