ElasticSearch全文搜尋引擎(二)-Spring Boot操作ES(SpringData概述、Spring Data Elasticsearch、基本操作、ElasticSearch操作文件)
阿新 • • 發佈:2021-09-17
Spring Data是spring提供的一套連線各種第三方資料來源的框架集,它支援連線很多第三方資料來源,例如:
-
資料庫
-
redis
-
ElasticSearch
-
MongoDB等
包括資料庫在內,很多第三方資料都可以使用SpringData操作,非常方便。
2 Spring Data Elasticsearch
上面章節介紹了Spring Data可以連線很多第三方資料來源,其中ES就是Spring Data可以連線的物件。原生情況下,我們需要使用socket來連線ES獲得響應,再解析響應,程式碼量非常大,我們現在可以使用Spring Data提供的封裝,連線ES,方便快捷。
轉到knows-search模組:
下面我們新增Spring Data ES的依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
application.properties:
# 搜尋微服務埠
server.port=8066
# 搜尋微服務名稱
spring.application.name=search-service
# 定位ES的位置
spring.elasticsearch.rest.uris=http://localhost:9200
# 設定日誌門檻,顯示ES的操作資訊
logging.level.cn.tedu.knows.search=debug
# 還需要進一步設定才能使輸出日誌更清晰
logging.level.org.elasticsearch.client.RestClient=debug
SpringBoot啟動類無需配置!
3 實現基本操作
操作ES需要類:首先定義一個對應ES資料的型別,建立一個vo包,包中定義Item(商品)類程式碼如下:
package cn.tedu.knows.search.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
這個類中所有屬性均配置了對應ES的屬性和型別,下面我們就可以使用這個類操作ES了。
建立一個包repository,建立一個介面ItemRepository:
這個介面和Mybatis Plus中Mapper介面繼承的BaseMapper類似,會自動提供基本的增刪改查方法。下面進行測試,測試類程式碼如下:
package cn.tedu.knows.search;
import cn.tedu.knows.search.repository.ItemRepository;
import cn.tedu.knows.search.vo.Item;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;