溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Elasticsearch數(shù)據(jù)庫有哪些特點(diǎn)

發(fā)布時間:2021-11-16 16:49:41 來源:億速云 閱讀:434 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“Elasticsearch數(shù)據(jù)庫有哪些特點(diǎn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Elasticsearch數(shù)據(jù)庫有哪些特點(diǎn)”吧!

1、什么是Elasticsearch
1、概念以及特點(diǎn)
         1、Elasticsearch和MongoDB/Redis/Memcache一樣,是非關(guān)系型數(shù)據(jù)庫。是一個接近實(shí)時的搜索平臺,從索引這個文檔到這個文檔能夠被搜索到只有一個輕微的延遲,企業(yè)應(yīng)用定位:采用Restful API標(biāo)準(zhǔn)的可擴(kuò)展和高可用的實(shí)時數(shù)據(jù)分析的全文搜索工具。

    2、可拓展:支持一主多從且擴(kuò)容簡易,只要cluster.name一致且在同一個網(wǎng)絡(luò)中就能自動加入當(dāng)前集群;本身就是開源軟件,也支持很多開源的第三方插件。

    3、高可用:在一個集群的多個節(jié)點(diǎn)中進(jìn)行分布式存儲,索引支持shards和復(fù)制,即使部分節(jié)點(diǎn)down掉,也能自動進(jìn)行數(shù)據(jù)恢復(fù)和主從切換。

    3、采用RestfulAPI標(biāo)準(zhǔn):通過http接口使用JSON格式進(jìn)行操作數(shù)據(jù)。

    4、數(shù)據(jù)存儲的最小單位是文檔,本質(zhì)上是一個JSON 文本:

2、項(xiàng)目中為何使用(主搜索次分析再存儲)
2.1、搜索引擎
         實(shí)際項(xiàng)目開發(fā)中,幾乎每個系統(tǒng)都會有一個搜索的功能,數(shù)據(jù)量少時可以直接從主數(shù)據(jù)庫中比如Mysql搜索,但當(dāng)搜索做到一定程度時,比如系統(tǒng)數(shù)據(jù)量上了10億、100億條的時候,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的I/O性能和統(tǒng)計分析性能就難以滿足用戶需要了。所以很多公司都會把搜索單獨(dú)做成一個獨(dú)立的模塊,用ElasticSearch等來實(shí)現(xiàn)。雖然內(nèi)存緩存數(shù)據(jù)庫的讀寫性能很高,但完全把數(shù)據(jù)放在內(nèi)存中是不太現(xiàn)實(shí)的,比如到PB級別的數(shù)據(jù),按照每個節(jié)點(diǎn)96G內(nèi)存計算,在內(nèi)存完全裝滿的數(shù)據(jù)情況下,需要的機(jī)器是:1PB=1024T=1048576G ,節(jié)點(diǎn)數(shù)就是1048576/96=10922個 ,再考慮到數(shù)據(jù)備份,節(jié)點(diǎn)數(shù)還需要翻倍,成本巨大決定了其不現(xiàn)實(shí)!

2.2、日志分析
   Elasticsearch+ Logstash + Kibana是同一家公司開發(fā)的3個開源工具,可組合起來搭建海量日志分析平臺,目前很多公司都在使用這種方式搭建日志分析平臺進(jìn)行大數(shù)據(jù)分析。

3、底層架構(gòu)


4、使用狀況以及與其他搜索引擎的對比
         2013年初,GitHub拋棄了Solr,采取ElasticSearch來做PB級的搜索,包括13億文件和1300億行代碼”。

         百度目前廣泛使用ElasticSearch作為文本數(shù)據(jù)分析,采集百度所有服務(wù)器上的各類指標(biāo)數(shù)據(jù)及用戶自定義數(shù)據(jù),通過對各種數(shù)據(jù)進(jìn)行多維分析展示,輔助定位分析實(shí)例異?;驑I(yè)務(wù)層面異常。目前覆蓋百度內(nèi)部20多個業(yè)務(wù)線(包括casio、云分析、網(wǎng)盟、預(yù)測、文庫、直達(dá)號、錢包、風(fēng)控等),單集群最大100臺機(jī)器,200個ES節(jié)點(diǎn),每天導(dǎo)入30TB+數(shù)據(jù)。

2、RESTFul 介紹
1、什么是RESTFul
         REST(RepresentationalState Transfer)是一種軟件架構(gòu)的設(shè)計風(fēng)格(不是標(biāo)準(zhǔn)),通過 HTTP接口處理數(shù)據(jù),主要用于客戶端和服務(wù)器的數(shù)據(jù)交互。該風(fēng)格的具體特點(diǎn)——在服務(wù)器端,應(yīng)用程序?qū)ο蟆?shù)據(jù)庫記錄、算法、文本、圖片等都是一個實(shí)體資源,使用 URI標(biāo)識,所有資源都共享統(tǒng)一的接口(標(biāo)準(zhǔn)的HTTP方法)比如 GET、PUT、POST 和 DELETE,在客戶端和服務(wù)器之間傳輸數(shù)據(jù)。

2、CURL命令的講解
2.1、什么是CURL
    本質(zhì)就是以命令方式發(fā)送HTTP請求,可以完成比如發(fā)送表單信息、文件上傳、分段下載、模擬登錄等,理論上在APP或Web里能操作的通過此指令都能操作。

2.2、具體應(yīng)用


3、Elasticsearch API文檔查看


3、Elasticsearch及相關(guān)插件的安裝
1、安裝Elasticsearch并啟動服務(wù)


2、安裝第三方插件


2.1、Head插件
         是Elasticsearch的一個集群管理工具,可以通過它來查看和搜索ES的數(shù)據(jù),是完全由html5編寫的獨(dú)立網(wǎng)頁程序。

2.2、Bigdesk插件
         是Elasticsearch的一個集群監(jiān)控工具,可以通過它來查看ES集群的各種狀況,如cpu、內(nèi)存使用情況、索引數(shù)據(jù)、搜索情況、http連接數(shù)等。

2.3、Mavel插件


4、倒排索引(ES具體是怎么搜索的)
1、倒排索引和正向索引
         在全文搜索里,文檔數(shù)據(jù)離不開搜索,而搜索離不開索引(沒有索引搜索會很低效),倒排索引(Inverted index)是全文搜索系統(tǒng)里最高效的索引方法和數(shù)據(jù)結(jié)構(gòu),ES的索引就是倒排索引。也稱反向索引/置入索引或反向檔案,用以存儲一個映射:在全文搜索下某個單詞在一個文檔或者一組文檔中的位置。

2、倒排索引建立索引的具體方式
始、確定需求
         在這5份文檔中根據(jù)關(guān)鍵字“喬布斯”搜索匹配的文檔,附屬要求:文檔的排序,這個搜索關(guān)鍵字在每個匹配文檔中出現(xiàn)的位置和次數(shù)。

1、把文檔進(jìn)行分詞(怎么分要看實(shí)際需求)


2、得到單詞集合和文檔集合(使用ID標(biāo)記)


3、根據(jù)上面?zhèn)z集合得到這個矩陣/數(shù)據(jù)結(jié)構(gòu)


4、根據(jù)上表建立索引


終、實(shí)現(xiàn)需求了


5、ES的CURD操作
1、ES的API(本次在Mevel里演示,等同head和curl)
1.1、操作索引的API
 

1.2、操作類型的API


1.3、操作文檔的API(每次僅能操作一個文檔)


2、ES的內(nèi)置字段以及字段的類型


6、批量操作文檔
         上節(jié)介紹的關(guān)于《操作文檔的API》都只能對單個文檔進(jìn)行增刪改查,mget用于批量檢索多個文檔,bulk用以批量創(chuàng)建/更新/刪除多個文檔。

1、通過mget批量檢索多個文檔


2、通過bulk批量創(chuàng)建/更新/刪除多個文檔
1、bulk的使用規(guī)范和使用案例


2、bulk處理文檔大小的最佳值


7、Elasticsearch的鎖機(jī)制
1、為什么要使用鎖機(jī)制


2、加鎖的機(jī)制:悲觀鎖和樂觀鎖
         悲觀鎖和樂觀鎖是什么已經(jīng)在《Mysql.docx》介紹了。

    1、其中提到對于數(shù)據(jù)庫而言,悲觀鎖只能通過數(shù)據(jù)庫本身實(shí)現(xiàn),但是ES并沒有提供悲觀鎖機(jī)制。

    2、其中也提到對于數(shù)據(jù)庫而言,樂觀鎖是通過邏輯實(shí)現(xiàn)的,在ES數(shù)據(jù)庫上實(shí)現(xiàn)樂觀鎖便是通過文檔的默認(rèn)字段_version實(shí)現(xiàn)的。

3、ES實(shí)現(xiàn)樂觀鎖的兩種方式
         前提:兩種修改文檔(_update更新和put覆蓋)的方式都會導(dǎo)致目標(biāo)文檔的_version自增1或者直接改為指定的。

3.1、內(nèi)部版本控制
         指定的version必須要 = 文檔目前的_version,否則就報error。如果符合就修改成功,并且把文檔version自增1。

3.2、外部版本控制
         搭配version_type=external,指定的version必須 > 文檔目前的_version,否則就報error。如果符合就修改成功,并且把文檔version直接變成指定的。

8、Elasticsearch如何做Mapping
1、什么是mapping
         映射就是在創(chuàng)建索引或者先創(chuàng)建索引后修改的時候,預(yù)先定義字段的數(shù)據(jù)類型以及相關(guān)屬性。

   如果程序員沒有主動為索引創(chuàng)建映射,則以后在創(chuàng)建文檔時,ES會智能的給索引建立映射,處理每個字段的數(shù)據(jù)類型和屬性。

2、ES里可以為字段定義哪些數(shù)據(jù)類型和屬性


3、關(guān)于映射的具體操作


9、ES查詢


1、基本查詢


1、使用q查詢


2、使用term系列查詢
1、使用term查詢


2、使用terms查詢


3、使用match系列查詢(有智能搜索的效果)
1、使用match查詢


2、使用match_phrase查詢


3、使用multi_match查詢


4、使用match_all查詢


5、使用prefix作前綴匹配查詢


6、使用range作區(qū)間搜索


7、使用wildcard查詢


8、使用fuzzy進(jìn)行模糊搜索(有智能搜索的效果)


1、使用fuzzy查詢


2、使用fuzzy_like_this查詢


3、使用fuzzy_like_this_field查詢


2、組合查詢和過濾查詢
    當(dāng)在請求中看到must(and)、should(or)、must_not(not)、filtered、filter、exists、gt、lt、missing、negative、negative_boost、_cache、constant_score、not_match_query、indices等詞時,就是使用了組合查詢或者過濾查詢,太麻煩,不研究了。僅介紹下圖這一種,使用bool也是最常用的:

3、查詢的輔助字段,用以處理結(jié)果集
1、使用from和size控制返回文檔的數(shù)量


2、使用version返回文檔的_version


3、使用fields返回指定字段


4、使用partial_fields返回指定字段


5、使用sort排序


6、使用通配符,通常是用在字段名中


10、ES集群管理
1、ES的數(shù)據(jù)為何是安全的


2、elasticsearch.yml文件配置

感謝各位的閱讀,以上就是“Elasticsearch數(shù)據(jù)庫有哪些特點(diǎn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Elasticsearch數(shù)據(jù)庫有哪些特點(diǎn)這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI