摘要:極速的查詢速度通過有限狀態(tài)轉(zhuǎn)換器實(shí)現(xiàn)了用于全文檢索的倒排索引,實(shí)現(xiàn)了用于存儲數(shù)值數(shù)據(jù)和地理位置數(shù)據(jù)的樹,以及用于分析的列存儲。每個數(shù)據(jù)都被編入了索引。強(qiáng)大的彈性保障硬件故障。檢測這些故障并確保集群和數(shù)據(jù)的安全性和可用性。
What —— Elasticsearch是什么?
Elasticsearch是一個基于Lucene的搜索服務(wù)器,Elasticsearch也是使用Java編寫的,它的內(nèi)部使用Lucene做索引與搜索,但是它的目的是使用全文檢索變得簡單,通過隱藏Lucene的復(fù)雜性,取而代之的提供一套簡單一致的RESTful API。
Elasticsearch 不僅僅是 Lucene,并且也不僅僅只是一個全文搜索引擎。 它可以被下面這樣準(zhǔn)確的形容:
一個分布式的實(shí)時(shí)文檔存儲,每個字段 可以被索引與搜索
一個分布式實(shí)時(shí)分析搜索引擎
能勝任上百個服務(wù)節(jié)點(diǎn)的擴(kuò)展,并支持 PB 級別的結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)
面向文檔Elasticsearch是面向文檔,即文檔是可以被索引的信息的基本單位,而文檔的格式是在NoSQL中常用的JSON,關(guān)于關(guān)系型數(shù)據(jù)庫和Elasticsearch之間一些名詞的關(guān)系的對應(yīng)可以用以下的表格來表示,方便我們后面的應(yīng)用:
關(guān)系型數(shù)據(jù)庫 | Elasticsearch |
---|---|
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Schema | Mapping |
這里需要注意的是文檔的格式不是固定的,同一個Type下的不同文檔可以擁有不同的格式
Why —— 為什么選擇Elasticsearch?豐富的查詢方式——Elasticsearch能夠執(zhí)行及合并多種類型的搜索(結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)、地理位置、指標(biāo)),搜索方式隨心而變。
極速的查詢速度——Elasticsearch通過有限狀態(tài)轉(zhuǎn)換器實(shí)現(xiàn)了用于全文檢索的倒排索引,實(shí)現(xiàn)了用于存儲數(shù)值數(shù)據(jù)和地理位置數(shù)據(jù)的 BKD 樹,以及用于分析的列存儲。每個數(shù)據(jù)都被編入了索引。
可觀的可擴(kuò)展性——Elasticsearch能夠水平擴(kuò)展,每秒鐘可處理海量事件,同時(shí)能夠自動管理索引和查詢在集群中的分布方式,可以在承載了 PB 級數(shù)據(jù)的成百上千臺服務(wù)器上運(yùn)行。
強(qiáng)大的彈性保障——硬件故障。網(wǎng)絡(luò)分割。Elasticsearch 檢測這些故障并確保集群(和數(shù)據(jù))的安全性和可用性。通過跨集群復(fù)制功能,輔助集群可以作為熱備份隨時(shí)投入使用。
How —— 如何在Spring Boot實(shí)戰(zhàn)中使用Elasticsearch? 安裝Elasticsearchhttps://www.elastic.co/cn/dow...
這里我們選擇的是6.2.2版本的ES,因?yàn)槲以趕pring-data-elasticsearch的github上看到最新版本的支持的ES是6.2.2
其中3.2.x版本尚未發(fā)布正式版,所以這里選擇了最新的3.1.8版本,下面我們切換到安裝目錄的bin目錄下,啟動es:
./elasticsearch &
這里添加 & 符號的作用是讓它在后臺運(yùn)行。
看到這個就說明啟動成功了~
安裝中文分詞器iK因?yàn)?,在我們?nèi)粘5膽?yīng)用中,我們用的比較多的都是中文的分詞,所以這里我們需要一個中文的分詞器
首先前往github上下載與ES版本對應(yīng)的zip包
https://github.com/medcl/elas...
然后在es的安裝目錄下的plugins下新建一個ik的目錄,將zip包解壓到該目錄下重啟es即可~
在es的啟動日志中看到這個說明插件已經(jīng)安裝并啟動成功!
到這里,我們的前期準(zhǔn)備工作就已經(jīng)結(jié)束了,下面的就是在Spring Boot項(xiàng)目中進(jìn)行操作了~
我們首先在pom.xml中添加spring-data-elasticsearch的依賴(敲黑板??!這里的版本一定要去參考一下對應(yīng)的ES的版本,不然就會引起版本兼容性問題而報(bào)錯?。?/p>
org.springframework.data spring-data-elasticsearch 3.1.8.RELEASE
依賴已經(jīng)添加完畢,下面我們就通過簡單的配置來完成CRUD
CRUD這里的配置需要注意一個點(diǎn),我們訪問的9200是HTTP的端口號,而使用Java的時(shí)候需要配置成9300:
spring: data: elasticsearch: cluster-name: my-applicatioon cluster-nodes: 127.0.0.1:9300
在啟動日志中,我們可以看到這一點(diǎn):
然后我們通過注解來完成一個index和mapping的創(chuàng)建(即對應(yīng)關(guān)系型數(shù)據(jù)庫中的庫和表)
@Data @Document(indexName = "test",type = "article") public class Article implements Serializable { private Long id; @Field(type= FieldType.Text,analyzer = "ik_max_word") private String title; private String content; }
@Filed注解中的屬性可以對分詞器進(jìn)行配置analyzer = "ik_max_word",這樣就可以在查詢標(biāo)題的時(shí)候使我們的中文分詞器了~
這樣,我們就創(chuàng)建了一個index(database)名為test,并新建一個type(table)名為article。
下面,我們?nèi)绻胍瓿蒀RUD,只需要創(chuàng)建一個接口去繼承ElasticsearchRepository即可,如下:
public interface ESDao extends ElasticsearchRepository{ }
然后,我們就可以在我們項(xiàng)目這樣去用了~
和JPA一樣方便,我們這時(shí)就可以把ES當(dāng)做MySQL去操作即可~
項(xiàng)目中用到的對應(yīng)版本的包我已經(jīng)上傳到了百度網(wǎng)盤,關(guān)注公眾號回復(fù)“ES”即可獲取。
完整的Demo代碼我已經(jīng)上傳到了github,歡迎fork star pr
https://github.com/viyog/viboot
原創(chuàng)不易,謝謝支持!
公眾號文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/76121.html
摘要:時(shí)間年月日星期四說明本文部分內(nèi)容均來自慕課網(wǎng)。那么里面的數(shù)據(jù)就可以分為各種各樣的索引,比如汽車索引圖書索引家具索引等等。圖書索引又可以細(xì)分為各種類型,比如科普類小說類技術(shù)類等等。具體到每一本書籍,就是文檔,就是整個圖書里面最小的存儲單位。 時(shí)間:2017年09月14日星期四說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https...
摘要:注本文首發(fā)于公眾號,可長按或掃描下面的小心心來訂閱實(shí)驗(yàn)環(huán)境版本版本首先當(dāng)然需要安裝好環(huán)境,最好再安裝上可視化插件來便于我們直觀地查看數(shù)據(jù)。 showImg(https://segmentfault.com/img/remote/1460000015723674); 注: 本文首發(fā)于 My 公眾號 CodeSheep ,可 長按 或 掃描 下面的 小心心 來訂閱 ↓ ↓ ↓ showI...
閱讀 3584·2021-11-04 16:06
閱讀 3578·2021-09-09 11:56
閱讀 846·2021-09-01 11:39
閱讀 896·2019-08-29 15:28
閱讀 2293·2019-08-29 15:18
閱讀 829·2019-08-29 13:26
閱讀 3333·2019-08-29 13:22
閱讀 1046·2019-08-29 12:18