Spring Boot中Elasticsearch的連接配置原理與使用詳解
引言
Elasticsearch是一種開源的分布式搜索和數(shù)據(jù)分析引擎,它可用于全文搜索、結(jié)構(gòu)化搜索、分析等應(yīng)用場景。在Spring Boot中,我們可以通過Elasticsearch實現(xiàn)對數(shù)據(jù)的搜索和分析。本文將介紹Spring Boot中Elasticsearch的連接配置、原理和使用方法。
Elasticsearch連接配置
在Spring Boot中,我們可以通過引入Elasticsearch依賴來使用它。在pom.xml文件中添加以下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
然后在application.properties或application.yml文件中添加Elasticsearch的配置:
spring.data.elasticsearch.cluster-name=my-application spring.data.elasticsearch.cluster-nodes=localhost:9300
以上配置中,cluster-name
指定了Elasticsearch集群的名稱,cluster-nodes
指定了Elasticsearch節(jié)點的地址和端口號。
另外,如果需要使用Elasticsearch的安全功能,可以添加以下配置:
spring.data.elasticsearch.repositories.enabled=true spring.data.elasticsearch.cluster-nodes=localhost:9300 spring.data.elasticsearch.cluster-name=my-application spring.data.elasticsearch.username=elastic spring.data.elasticsearch.password=changeme
以上配置中,spring.data.elasticsearch.repositories.enabled
指定啟用Elasticsearch的存儲庫,spring.data.elasticsearch.username
和spring.data.elasticsearch.password
指定了Elasticsearch的用戶名和密碼。當(dāng)然,這需要在Elasticsearch中進(jìn)行相應(yīng)的配置。
Elasticsearch連接原理
Spring Boot中使用Elasticsearch連接時,需要使用Elasticsearch的Java客戶端連接Elasticsearch集群。Elasticsearch的Java客戶端使用TransportClient或NodeClient來連接Elasticsearch集群。
在使用TransportClient連接Elasticsearch集群時,需要指定Elasticsearch節(jié)點的地址和端口號。TransportClient會隨機選擇一個可用的節(jié)點進(jìn)行連接,并在連接失敗時自動重試連接其他節(jié)點。在連接成功后,TransportClient將與Elasticsearch集群建立TCP連接,并通過該連接與其進(jìn)行通信。
在使用NodeClient連接Elasticsearch集群時,需要在應(yīng)用程序中啟動一個節(jié)點,該節(jié)點將與Elasticsearch集群中的其他節(jié)點通信。NodeClient使用Java API與本地節(jié)點進(jìn)行通信,然后將請求轉(zhuǎn)發(fā)到Elasticsearch集群中的其他節(jié)點。這種方式可以減少網(wǎng)絡(luò)通信的成本,并提高查詢和索引的性能。
Elasticsearch使用方法
在Spring Boot中,我們可以通過注入ElasticsearchTemplate
或ElasticsearchRestTemplate
來使用Elasticsearch。這兩個類都實現(xiàn)了ElasticsearchOperations
接口,提供了對Elasticsearch的各種操作。
ElasticsearchTemplate
ElasticsearchTemplate
是Elasticsearch Java客戶端提供的一種操作Elasticsearch集群的方式。它提供了大量的方法,包括索引、更新、刪除、搜索等操作。
以下是一個使用ElasticsearchTemplate
進(jìn)行搜索的示例:
@Autowired private ElasticsearchTemplate elasticsearchTemplate; public List<Article> searchArticle(String keyword) { QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", keyword); NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(queryBuilder) .build(); SearchHits<Article> searchHits = elasticsearchTemplate.search(searchQuery, Article.class); return Arrays.stream(searchHits.getHits()) .map(SearchHit::getContent) .collect(Collectors.toList()); }
以上代碼中,我們首先通過QueryBuilder
創(chuàng)建了一個查詢條件,然后通過NativeSearchQueryBuilder
創(chuàng)建了一個搜索請求。最后,我們使用ElasticsearchTemplate
的search
方法執(zhí)行搜索,并將結(jié)果轉(zhuǎn)換為Article對象列表。
ElasticsearchRestTemplate
ElasticsearchRestTemplate
是Spring Data Elasticsearch提供的一種操作Elasticsearch集群的方式。它提供了大量的方法,包括索引、更新、刪除、搜索等操作。與ElasticsearchTemplate
不同的是,ElasticsearchRestTemplate
使用REST API與Elasticsearch集群通信。
以下是一個使用ElasticsearchRestTemplate
進(jìn)行索引操作的示例:
@Autowired private ElasticsearchRestTemplate elasticsearchRestTemplate; public void indexArticle(Article article) { IndexQuery indexQuery = new IndexQueryBuilder() .withObject(article) .build(); elasticsearchRestTemplate.index(indexQuery, IndexCoordinates.of("articles")); }
以上代碼中,我們首先通過IndexQueryBuilder
創(chuàng)建了一個索引請求,然后使用ElasticsearchRestTemplate
的index
方法執(zhí)行索引操作,將Article對象保存到名為"articles"的索引中。
結(jié)論
本文介紹了Spring Boot中Elasticsearch的連接配置、原理和使用方法。在使用Elasticsearch時,我們需要注意一些配置和使用細(xì)節(jié),如指定Elasticsearch集群的名稱和節(jié)點地址、選擇合適的Java客戶端等。通過本文的介紹,我們希望讀者能夠更好地理解Spring Boot中Elasticsearch的使用方法,并在項目中更加靈活地應(yīng)用。
到此這篇關(guān)于Spring Boot中Elasticsearch的連接配置原理與使用詳解的文章就介紹到這了,更多相關(guān)Spring Boot Elasticsearch連接配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何用Java?幾分鐘處理完?30?億個數(shù)據(jù)(項目難題)
現(xiàn)有一個 10G 文件的數(shù)據(jù),里面包含了 18-70 之間的整數(shù),分別表示 18-70 歲的人群數(shù)量統(tǒng)計,今天小編通過本文給大家講解如何用Java?幾分鐘處理完?30?億個數(shù)據(jù),這個問題一直以來是項目難題,今天通過本文給大家詳細(xì)介紹下,感興趣的朋友一起看看吧2022-07-07Spring Boot學(xué)習(xí)入門之AOP處理請求詳解
AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù),下面這篇文章主要給大家介紹了關(guān)于Spring Boot學(xué)習(xí)入門之AOP處理請求的相關(guān)資料,需要的朋友可以參考下。2017-09-09javax.persistence中@Column定義字段類型方式
這篇文章主要介紹了javax.persistence中@Column定義字段類型方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11java打包文件成zip、壓縮文件及file.mkdir和mkdirs的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于java打包文件成zip、壓縮文件及file.mkdir和mkdirs區(qū)別詳解的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12springcloud項目占用內(nèi)存好幾個G導(dǎo)致服務(wù)器崩潰的問題
這篇文章主要介紹了springcloud項目占用內(nèi)存好幾個G導(dǎo)致服務(wù)器崩潰的問題,本文給大家分享解決方案供大家參考,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10