Spring Data Elasticsearch 是spring data对elasticsearch进行的封装。
这里有两种方式操作elasticsearch:
1、使用ElasticsearchRepository,即可使用内部封装好的API,这种方式类似spring data jpa、的MongoDB
2、在项目中使用@Autowired注入ElasticsearchTemplate,然后完成相应操作。
1、使用ElasticsearchRepository方式
1)导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
这里要注意版本问题:
SpringDataElasticSearch与ES版本之间有相应的适配关系,低版本的SpringDataElasticSearch不兼容高版本的ES。解决方案:
1.升级SpringBoot版本
2.降级ES版本。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X36rbias-1571406558370)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571402504012.png)]
2)application.yml
#配置spring-boot-starter-data-elasticsearch
data:
elasticsearch:
cluster-name: docker-cluster
cluster-nodes: 192.x.x:9300
3)实体类
这里介绍Spring Data通过注解来声明字段的映射属性,有下面的三个注解:
@Document 作用在类,标记实体类为文档对象,一般有两个属性
indexName:对应索引库名称
type:对应在索引库中的类型
shards:分片数量,默认5
replicas:副本数量,默认1
@Id 作用在成员变量,标记一个字段作为id主键
@Field 作用在成员变量,标记为文档的字段,并指定字段映射属性:
type:字段类型,是枚举:FieldType,可以是text、long、short、date、integer、object等
text:存储数据时候,会自动分词,并生成索引
keyword:存储数据时候,不会分词建立索引
Numerical:数值类型,分两类
基本数据类型:long、interger、short、byte、double、float、half_float
浮点数的高精度类型:scaled_float
需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
Date:日期类型
elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
index:是否索引,布尔类型,默认是true
store:是否存储,布尔类型&#x