本文基于
elasticsearch 6.8.2
和spring boot 2.x
核心配置
pom.xml
1 | <dependency> |
application.yml
1 | spring: |
实体注解
@Document
@Document
作用在类,标记实体类为文档对象。
@Document 属性 |
说明 |
---|---|
indexName |
对应索引库名称。 |
type |
对应在索引库中的类型。 |
shards |
分片数量,默认5。 |
replicas |
副本数量,默认1。 |
@Id
@Id
作用在成员变量,标记一个字段作为id主键。
@Field
@Field
作用在成员变量,标记为文档的字段,可以指定字段映射属性。
一般只要指定
text
|keyword
即可,其他会自动识别。
@Field 属性 |
说明 |
---|---|
type |
字段类型,取值是枚举:FieldType 。 |
index |
是否索引,布尔类型,默认是true 。 |
store |
是否存储,布尔类型,默认是false 。 |
analyzer |
分词器,如:ik_max_word 。 |
注解示例
1 | package tk.gushizone.elasticsearch.pojo; |
Template 索引操作
ElasticsearchTemplate
可以完成索引相关操作。
1 |
|
Repoitory 文档操作
众所周知, Spring Data
会提供 repository接口
用于 Dao操作,仅需要根据方法名就可以完成 CURD 等操作。
*Repository.java
1 | package tk.gushizone.elasticsearch.dao; |
保存 & 删除
保存
1 |
|
删除
1 |
|
基础查询
1 |
|
1 | item : Optional[Item(id=1, title=小米手机7, category=手机, brand=小米, price=3299.0, images=http://image.leyou.com/13123.jpg)] |
匹配查询
1 |
|
1 | Iterable<Item> : [Item(id=1, title=小米手机7, category=手机, brand=小米, price=3299.0, images=http://image.leyou.com/13123.jpg), Item(id=2, title=坚果手机R1, category=手机, brand=锤子, price=3699.0, images=http://image.leyou.com/13123.jpg)] |
自定义查询
1 |
|
1 | totalPages : 1, |
分页查询
1 |
|
1 | totalPages : 3, |
聚合查询
简单聚合
1 |
|
1 | 华为,共2台 |
嵌套聚合
1 |
|
1 | 华为, 共2台, 平均售价 : 3649.0 |