- 操作 ES 可以采用
SpringDataElasticSearch
- 使用 intellij IDEA 创建一个 Maven jar 工程
- 我这里就不在贴图了自行创建
添加相关依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
添加相关配置文件
- 在
src/java/resources
中创建 application.yml
- 配置内容如下:
spring:
elasticsearch:
rest:
uris: http://139.196.183.130:9200
添加相关实体类
- 在
top.it6666.dao
下创建一个 Article
实体类,内容如下:
/**
* @author BNTang
**/
@Data
@Document(indexName = "article")
public class Article {
@Id
private String id;
@Field(store = true, type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
private String title;
@Field(store = true, type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
private String content;
@Field(store = true, type = FieldType.Integer)
private Integer read;
@Field(store = true, type = FieldType.Keyword)
private String types;
@Field(store = true, type = FieldType.Keyword)
private String author;
}
- Spring Data 通过注解来声明字段的映射属性
- 有下面的三个注解来完成的:
注解名称 |
作用 |
@Document |
标记实体类为文档对象 |
@Id |
标记一个字段作为主键 |
@Field |
标记为文档中的那个的字段进行映射 |
相关注解详解
@Document
- 标记在类上,标记实体类为文档对象,一般有四个属性,如下:
indexName
:对应索引库的名称,指定那个索引
type
:索引的类型
shards
:分片数量,默认为 5
replicas
:副本数量,默认为 1
@Id
@Field
- 标记在成员变量上,标记为文档中的那个的字段,并指定字段映射属性:
type
:字段类型,取值是 枚举
:FieldType
index
:是否索引,布尔类型,默认是 true
store
:是否存储,布尔类型,默认是 false
analyzer
:分词器名称:ik_max_word
searchAnalyzer
:搜索时的分词器名称
Dao层
- 在
top.it6666.mapper
中创建一个 ArticleDao
接口
/**
* @author BNTang
**/
public interface ArticleDao extends ElasticsearchRepository<Article, String> {
}
Service层
- 在
top.it6666.service
中创建一个 ArticleService
类如下:
/**
* @author BNTang
*/
@Service
public class ArticleService {
@Autowired
private ArticleDao articleDao;
}