Springboot集成spring data elasticsearch過程詳解
版本對(duì)照

各版本的文檔說明:https://docs.spring.io/spring-data/elasticsearch/docs/
1、在application.yml中添加配置
spring:
data:
elasticsearch:
repositories:
enabled: true
#多實(shí)例集群擴(kuò)展時(shí)需要配置以下兩個(gè)參數(shù)
#cluster-name: datab-search
#cluster-nodes: 127.0.0.1:9300,127.0.0.1:9301
2、添加 Maven 依賴
<!---開箱即用,版本默認(rèn)和springboot版本對(duì)應(yīng)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
3、建立實(shí)體entity
注解說明:
Spring Data通過注解來聲明字段的映射屬性,有下面的三個(gè)注解:
- @Document 作用在類,標(biāo)記實(shí)體類為文檔對(duì)象,一般有兩個(gè)屬性
- indexName:對(duì)應(yīng)索引庫(kù)名稱
- type:對(duì)應(yīng)在索引庫(kù)中的類型
- shards:分片數(shù)量,默認(rèn)5
- replicas:副本數(shù)量,默認(rèn)1
- @Id 作用在成員變量,標(biāo)記一個(gè)字段作為id主鍵
- @Field 作用在成員變量,標(biāo)記為文檔的字段,并指定字段映射屬性:
- type:字段類型,是枚舉:FieldType,可以是text、long、short、date、integer、object等
- text:存儲(chǔ)數(shù)據(jù)時(shí)候,會(huì)自動(dòng)分詞,并生成索引
- keyword:存儲(chǔ)數(shù)據(jù)時(shí)候,不會(huì)分詞建立索引
- Numerical:數(shù)值類型,分兩類
- 基本數(shù)據(jù)類型:long、interger、short、byte、double、float、half_float
- 浮點(diǎn)數(shù)的高精度類型:scaled_float
- 需要指定一個(gè)精度因子,比如10或100。elasticsearch會(huì)把真實(shí)值乘以這個(gè)因子后存儲(chǔ),取出時(shí)再還原。
- Date:日期類型
- elasticsearch可以對(duì)日期格式化為字符串存儲(chǔ),但是建議我們存儲(chǔ)為毫秒值,存儲(chǔ)為long,節(jié)省空間。
- index:是否索引,布爾類型,默認(rèn)是true
- store:是否存儲(chǔ),布爾類型,默認(rèn)是false
- analyzer:分詞器名稱,這里的ik_max_word即使用ik分詞器
示例:
@Document(indexName = "cp_doc", type = "doc", shards = 10, replicas = 0)
public class CpDocument extends BaseEntity {
@Id//作用在成員變量,標(biāo)記一個(gè)字段作為id主鍵
private long id ;
@Field(type = FieldType.Text)
private String name ;
@Field(type = FieldType.Text)
private String address ;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
4、編寫 Repository 訪問層
/**
* 基本操作repository-curd
* @author 滾動(dòng)的蛋
*
*/
public interface CpRepository extends ElasticsearchRepository<CpDocument, Integer> {
}
5、創(chuàng)建索引+查詢示例
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElasticSearchTest {
@Autowired
CpRepository cpRepository;
@Autowired
ElasticsearchTemplate elsTemplate;//ElasticsearchTemplate中提供了創(chuàng)建索引的API<br data-filtered="filtered"><br data-filtered="filtered">
@Test
public void addIndexTest() {
//創(chuàng)建索引
boolean indexRes = elsTemplate.createIndex(CpDocument.class);
System.out.println("======創(chuàng)建索引結(jié)果:"+indexRes+"=========");
//添加索引
CpDocument cpTest = new CpDocument();
cpTest.setId(1);
cpTest.setName("阿里巴巴");
cpTest.setAddress("北京路12號(hào)");
cpRepository.save(cpTest);
}
@Test
public void srarchTest() {
//這個(gè)只做一個(gè)多字段的匹配查詢示例,其它的可以查看API文檔使用
//"name","address" 為匹配的字段
MultiMatchQueryBuilder multiMatchQuery = QueryBuilders.multiMatchQuery("阿里巴巴","address","name");//多字段匹配QueryBuilder
SearchQuery searchQuery = new NativeSearchQueryBuilder()//構(gòu)建查詢對(duì)象
.withQuery(multiMatchQuery)
.withIndices("cp_doc")//索引名
.withPageable(PageRequest.of(0, 10))//分頁(yè)
.build();
Iterable<CpDocument> productDtos = cpRepository.search(searchQuery);
ArrayList<CpDocument> CpDocuments = Lists.newArrayList(productDtos);
for (CpDocument cpDocument : CpDocuments) {
System.out.printf("企業(yè)名稱:%s,企業(yè)地址:%s\n",cpDocument.getName(),cpDocument.getAddress());
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot集成ElasticSearch實(shí)現(xiàn)搜索功能
- SpringBoot3集成ElasticSearch的方法詳解
- SpringBoot集成elasticsearch使用圖文詳解
- SpringBoot集成ElasticSearch的示例代碼
- Springboot集成Elasticsearch的步驟與相關(guān)功能
- SpringBoot框架集成ElasticSearch實(shí)現(xiàn)過程示例詳解
- springboot集成elasticsearch7的圖文方法
- SpringBoot集成Elasticsearch過程實(shí)例
- SpringBoot與Elasticsearch8.0集成
相關(guān)文章
IDEA2022創(chuàng)建SpringBoot項(xiàng)目的圖文教程
本文主要介紹了IDEA2022創(chuàng)建SpringBoot項(xiàng)目的圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
java利用Tabula實(shí)現(xiàn)對(duì)PDF內(nèi)表格數(shù)據(jù)提取
Tabula是一個(gè)開源工具,用于從PDF文檔中提取表格數(shù)據(jù),下面小編就來和大家詳細(xì)介紹一下java如何通過Tabula對(duì)PDF文件內(nèi)表格進(jìn)行數(shù)據(jù)提取吧2023-09-09
springboot 顯示打印加載bean耗時(shí)工具類的案例
文章介紹了Spring框架的Aware接口及其應(yīng)用場(chǎng)景,如獲取BeanFactory、Environment等資源信息,并通過案例演示了Spring Boot中監(jiān)控Bean加載耗時(shí)的工具類實(shí)現(xiàn),用于性能分析與調(diào)試,感興趣的朋友跟隨小編一起看看吧2025-07-07
Maven報(bào)錯(cuò)之導(dǎo)入Junit包來實(shí)現(xiàn)@Test注解問題
這篇文章主要介紹了Maven報(bào)錯(cuò)之導(dǎo)入Junit包來實(shí)現(xiàn)@Test注解問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Java中main函數(shù)的String[]?args用法舉例詳解
這篇文章主要給大家介紹了關(guān)于Java中main函數(shù)的String[]?args用法的相關(guān)資料,JAVA類中main函數(shù)的參數(shù)String[]?args指的是運(yùn)行時(shí)給main函數(shù)傳遞的參數(shù),文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Springboot+Shiro+Jwt實(shí)現(xiàn)權(quán)限控制的項(xiàng)目實(shí)踐
如今的互聯(lián)網(wǎng)已經(jīng)成為前后端分離的時(shí)代,所以本文在使用SpringBoot整合Shiro框架的時(shí)候會(huì)聯(lián)合JWT一起搭配使用,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
String.intern()作用與常量池關(guān)系示例解析
這篇文章主要為大家介紹了String.intern()作用與常量池關(guān)系示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

