橋西區(qū)網(wǎng)站建設(shè)時(shí)事新聞最新消息
目錄
- 一、Elasticsearch 簡(jiǎn)介
- 二、Elasticsearch 發(fā)展史
- 三、Elasticsearch 功能
- 四、Elasticsearch 特點(diǎn)
- 五、Elasticsearch 應(yīng)用場(chǎng)景
一、Elasticsearch 簡(jiǎn)介
Elasticsearch
是一個(gè)實(shí)時(shí)的分布式搜索分析引擎,它能讓你以前所未有的速度和規(guī)模,去探索你的數(shù)據(jù)。 它被用作全文檢索、結(jié)構(gòu)化搜索、分析以及這三個(gè)功能的組合。
Elasticsearch
中沒(méi)有一個(gè)單獨(dú)的組件是全新的或者是革命性的。全文搜索很久之前就已經(jīng)可以做到了, 就像很早之前出現(xiàn)的分析系統(tǒng)和分布式數(shù)據(jù)庫(kù)。 革命性的成果在于將這些單獨(dú)的,有用的組件融合到一個(gè)單一的、一致的、實(shí)時(shí)的應(yīng)用中。對(duì)于初學(xué)者而言它的門檻相對(duì)較低, 而當(dāng)你的技能提升或需求增加時(shí),它也始終能滿足你的需求。
Elasticsearch
是一個(gè)開(kāi)源的搜索引擎,建立在一個(gè)全文搜索引擎庫(kù) Apache Lucene?
基礎(chǔ)之上。 Lucene
可以說(shuō)是當(dāng)下最先進(jìn)、高性能、全功能的搜索引擎庫(kù)—?無(wú)論是開(kāi)源還是私有。但是 Lucene
僅僅只是一個(gè)庫(kù)。為了充分發(fā)揮其功能,你需要使用 Java
并將 Lucene
直接集成到應(yīng)用程序中。 更糟糕的是,您可能需要獲得信息檢索學(xué)位才能了解其工作原理。Lucene
非常 復(fù)雜。Elasticsearch
也是使用 Java
編寫(xiě)的,它的內(nèi)部使用 Lucene
做索引與搜索,但是它的目的是使全文檢索變得簡(jiǎn)單, 通過(guò)隱藏 Lucene
的復(fù)雜性,取而代之的提供一套簡(jiǎn)單一致的 RESTful API
。
- Lucene 是什么?
- Lucene是非常優(yōu)秀的成熟的 開(kāi)源的 免費(fèi)的純 純java 語(yǔ)言的全文索引檢索工具包。
- Lucene是一個(gè)高性能、可伸縮的信息搜索(IR)庫(kù)。Information Retrieval(IR) library.它使你可以為你的應(yīng)用程序添加索引和搜索能力。
- Lucene的作者Doug Cutting是資深的全文索引/檢索專家,最開(kāi)始發(fā)布在他本人的主頁(yè)上,2001年10月貢獻(xiàn)給APACHE,成為APACHE基金的一個(gè)子項(xiàng)目。
- Lucene是一個(gè)IR庫(kù)而不是現(xiàn)成的產(chǎn)品,當(dāng)然也不是Lucene的初識(shí)者常常認(rèn)為的web爬行器。
二、Elasticsearch 發(fā)展史
重要版本發(fā)布及版本特性:
0.4:2010年2月第一次發(fā)布
- 2010年2月8日, Shay Banon 發(fā)表了一篇博客,說(shuō)他基于Lucene開(kāi)發(fā)(封裝 ???)了一個(gè)分布式搜索引擎,實(shí)現(xiàn)了一些功能。。。
0.7:2010年5月
- 2010年5月14日發(fā)布,第一個(gè)可以查詢到發(fā)版信息的版本,重要特性:
- Zen Discovery 自動(dòng)發(fā)現(xiàn)模塊
- Groovy Client支持
- 簡(jiǎn)單的插件管理機(jī)制
- 更好支持ICU分詞器
- 更多的管理API
1.0:2014年2月
- 2014年2月14日發(fā)布,重要特性:
- Snapshot/Restore API 備份恢復(fù)API
- 支持聚合分析Aggregations
- CAT API 支持
- 支持聯(lián)盟查詢
- 斷路器支持
- Doc values 引入
2.0:2015年10月
- 2015年10月28日發(fā)布,重要特性:
- 增加了 pipleline Aggregations
- query/filter 查詢合并,都合并到query中,根據(jù)不同的上下文執(zhí)行不同的查詢
- 存儲(chǔ)壓縮可配置
- Rivers 模塊被移除
- Multicast 組播發(fā)現(xiàn)被移除,成為一個(gè)插件,生產(chǎn)環(huán)境必須配置單播地址
5.0:2016年10月
- 2016年10月26日發(fā)布,重要特性:
- Lucene 6.x 的支持,磁盤空間少一半;索引時(shí)間少一半;查詢性能提升25%;支持IPV6。
- Internal engine級(jí)別移除了用于避免同一文檔并發(fā)更新的競(jìng)爭(zhēng)鎖,帶來(lái)15%-20%的性能提升
- Shrink API ,它可將分片數(shù)進(jìn)行收縮成它的因數(shù),如之前你是15個(gè)分片,你可以收縮成5個(gè)或者3個(gè)又或者1個(gè),那么我們就可以想象成這樣一種場(chǎng)景,在寫(xiě)入壓力非常大的收集階段,設(shè)置足夠多的索引,充分利用shard的并行寫(xiě)能力,索引寫(xiě)完之后收縮成更少的shard,提高查詢性能
- 提供了第一個(gè)Java原生的REST客戶端SDK
- IngestNode,之前如果需要對(duì)數(shù)據(jù)進(jìn)行加工,都是在索引之前進(jìn)行處理,比如logstash可以對(duì)日志進(jìn)行結(jié)構(gòu)化和轉(zhuǎn)換,現(xiàn)在直接在es就可以處理了
- 提供了 Painless 腳本,代替Groovy腳本
6.0:2017年8月
- 2017年8月31日發(fā)布,重要特性:
- 稀疏性 Doc Values 的支持
- Index sorting,即索引階段的排序。
- 順序號(hào)的支持,每個(gè) es 的操作都有一個(gè)順序編號(hào)(類似增量設(shè)計(jì))
- 無(wú)縫滾動(dòng)升級(jí)
- Removal of types,在 6.0 里面,開(kāi)始不支持一個(gè) index 里面存在多個(gè) type
- Index-template inheritance,索引版本的繼承,目前索引模板是所有匹配的都會(huì)合并,這樣會(huì)造成索引模板有一些沖突問(wèn)題, 6.0 將會(huì)只匹配一個(gè),索引創(chuàng)建時(shí)也會(huì)進(jìn)行驗(yàn)證
- Load aware shard routing, 基于負(fù)載的請(qǐng)求路由,目前的搜索請(qǐng)求是全節(jié)點(diǎn)輪詢,那么性能最慢的節(jié)點(diǎn)往往會(huì)造成整體的延遲增加,新的實(shí)現(xiàn)方式將基于隊(duì)列的耗費(fèi)時(shí)間自動(dòng)調(diào)節(jié)隊(duì)列長(zhǎng)度,負(fù)載高的節(jié)點(diǎn)的隊(duì)列長(zhǎng)度將減少,讓其他節(jié)點(diǎn)分?jǐn)偢嗟膲毫?#xff0c;搜索和索引都將基于這種機(jī)制。
- 已經(jīng)關(guān)閉的索引將也支持 replica 的自動(dòng)處理,確保數(shù)據(jù)可靠。
7.0:2019年4月
- 2019年4月10日發(fā)布,重要特性:
- 引入了真正的內(nèi)存斷路器,它可以更精準(zhǔn)地檢測(cè)出無(wú)法處理的請(qǐng)求,并防止它們使單個(gè)節(jié)點(diǎn)不穩(wěn)定
- Zen2 是 Elasticsearch 的全新集群協(xié)調(diào)層,提高了可靠性、性能和用戶體驗(yàn),變得更快、更安全,并更易于使用
- 查詢優(yōu)化
- 更快的前 k 個(gè)查詢
- 間隔查詢
- Function score 2.0
8.0:2022年2月
- 2022年2月11日發(fā)布,重要特性:
- REST API 兼容性
- 8.0 為 Elasticsearch REST APIs 引入了一些重大的變化。Elasticsearch 已經(jīng)在 REST API 中增加了對(duì) 7.x 兼容性 header 的支持。這些可選的 header 文件讓你向 8.0 集群發(fā)出 7.x 兼容的請(qǐng)求,并收到 7.x 兼容的響應(yīng)。
- 安全功能在默認(rèn)情況下被啟用和配置,首次啟動(dòng) Elasticsearch 時(shí),會(huì)自動(dòng)進(jìn)行以下安全配置:
- 為傳輸層和 HTTP 層生成 TLS 證書(shū)和密鑰。
- TLS 配置設(shè)置被寫(xiě)入elasticsearch.yml。
- 為 elastic 用戶生成密碼。
- 為 Kibana 生成一個(gè)注冊(cè)令牌。
- 系統(tǒng)索引得到更好保護(hù)
- 在 Elasticsearch 8.0 中做了一些改變來(lái)保護(hù)系統(tǒng)索引不被直接訪問(wèn)。要訪問(wèn)系統(tǒng)索引的話,用戶現(xiàn)在必須把 allow_restricted_indices 權(quán)限設(shè)置為 true。
- superuser 角色也不再給予系統(tǒng)索引的寫(xiě)入權(quán)限。因此,內(nèi)置的 elastic superuser 默認(rèn)不能改變系統(tǒng)索引。
- 此后,開(kāi)發(fā)者應(yīng)使用 Kibana 或相關(guān)的 Elasticsearch APIs 來(lái)管理某個(gè)功能的數(shù)據(jù),而不是訪問(wèn)系統(tǒng)索引。如果你直接訪問(wèn)系統(tǒng)索引,Elasticsearch 將在 API 響應(yīng)的 header 中和廢棄日志中返回警告。
- 新的 kNN 搜索(kNN搜索是通過(guò)相似度判斷來(lái)根據(jù)查詢向量查找K個(gè)鄰近的向量),使用kNN的場(chǎng)景有:
- 基于自然語(yǔ)言處理(NLP)算法的相關(guān)性排序。
- 產(chǎn)品推薦和推薦引擎。
- 圖片或視頻的相似搜索。
- 更新了倒排索引的內(nèi)部數(shù)據(jù)結(jié)構(gòu),節(jié)省了磁盤存儲(chǔ)空間。
- 這種變化將使 keyword 字段類型、 match_only_text 字段類型以及在較小程度上的 text字段類型受益。
- 該更新使得轉(zhuǎn)化為 message 字段索引大小(映射為match_only_text)減少了 14.4%,磁盤占用空間總體減少了 3.5%。
- 加快geo_point,geo_shape和 range 字段索引速度
- 新版本優(yōu)化了多維點(diǎn)(multi-dimensional points)的索引速度,多維點(diǎn)是用于 geo_point、geo_shape 和range 字段的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。Lucene 級(jí)別的基準(zhǔn)測(cè)試顯示,這些字段類型的索引速度提高了 10-15%。主要由這些字段組成的 Elasticsearch 索引和數(shù)據(jù)流可能會(huì)在索引速度方面有顯著的改進(jìn)。
- PyTorch 模型支持自然語(yǔ)言處理 (NLP)
- 可以上傳在 Elasticsearch 之外訓(xùn)練的 PyTorch 模型,并在攝取時(shí)使用它們進(jìn)行推理。
- 第三方模型支持為 Elastic Stack 帶來(lái)了現(xiàn)代自然語(yǔ)言處理 (NLP)和搜索用例,例如:
- 填充蒙版 Fill-mask
- 命名實(shí)體識(shí)別 Named entity recognition (NER)
- 文本分類 Text classification
- 文本嵌入 Text embedding
- 零樣本分類 Zero-shot classification
發(fā)布日期 | 版本號(hào) | 時(shí)間間隔 |
---|---|---|
2010-02-08 | V0.2 | |
2010-05-14 | V0.7 | 95天 |
2014-02-14 | V1.0 | 1372 天 |
2015-10-28 | V2.0 | 621 天 |
2016-10-26 | V5.0 | 364 天 |
2017-11-14 | V6.0 | 384 天 |
2019-04-10 | V7.0 | 512 天 |
2022-02-11 | V8.0 | 1038 天 |
三、Elasticsearch 功能
分布式的搜索引擎和數(shù)據(jù)分析引擎
- 搜索就是類似于百度,查找各種網(wǎng)頁(yè)
- 數(shù)據(jù)分析就類似于博客統(tǒng)計(jì)累計(jì)訪問(wèn)量、電商平臺(tái)的銷量前十
?
全文檢索、結(jié)構(gòu)化檢索、數(shù)據(jù)分析
- 全文檢索類似于sql中的模糊查詢,全文進(jìn)行搜索
- 結(jié)構(gòu)化搜索就類似于指定查詢,查找到對(duì)應(yīng)的一行
?
對(duì)海量數(shù)據(jù)進(jìn)行近實(shí)時(shí)處理
- 分布式:ES自定可以將海量數(shù)據(jù)分散到多臺(tái)服務(wù)器上存儲(chǔ)和檢索
- 海量數(shù)據(jù)的處理:分布式以后,就可以采用大量的服務(wù)器去存儲(chǔ)和檢索數(shù)據(jù),自然而然就可以實(shí)現(xiàn)海量數(shù)據(jù)的處理了
- 近實(shí)時(shí):檢索個(gè)數(shù)據(jù)要花費(fèi)1小時(shí),(這時(shí)就不要近實(shí)時(shí),做好進(jìn)行離線批量處理),在秒級(jí)別對(duì)數(shù)據(jù)進(jìn)行搜索和分析
四、Elasticsearch 特點(diǎn)
- 可以作為一個(gè)大型分布式集群(數(shù)百臺(tái)服務(wù)器)技術(shù),處理PB級(jí)數(shù)據(jù),服務(wù)大公司;也可以運(yùn)行在單機(jī)上,服務(wù)小公司
- Elasticsearch不是什么新技術(shù),主要是將全文檢索、數(shù)據(jù)分析以及分布式技術(shù),合并在了一起,才形成了獨(dú)一無(wú)二的ES;lucene(全文檢索),商用的數(shù)據(jù)分析軟件(也是有的),分布式數(shù)據(jù)庫(kù)(mycat)
- 對(duì)用戶而言,是開(kāi)箱即用的,非常簡(jiǎn)單,作為中小型的應(yīng)用,直接3分鐘部署一下ES,就可以作為生產(chǎn)環(huán)境的系統(tǒng)來(lái)使用了,數(shù)據(jù)量不大,操作不是太復(fù)雜
- 數(shù)據(jù)庫(kù)的功能面對(duì)很多領(lǐng)域是不夠用的(事務(wù),還有各種聯(lián)機(jī)事務(wù)型的操作);特殊的功能,比如全文檢索,同義詞處理,相關(guān)度排名,復(fù)雜數(shù)據(jù)分析,海量數(shù)據(jù)的近實(shí)時(shí)處理;Elasticsearch作為傳統(tǒng)數(shù)據(jù)庫(kù)的一個(gè)
- 全文搜索:是指計(jì)算機(jī)索引程序通過(guò)掃描文章中的每一個(gè)詞,對(duì)每一個(gè)詞建立一個(gè)索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當(dāng)用戶查詢時(shí),檢索程序就根據(jù)事先建立的索引進(jìn)行查找,并將查找的結(jié)果反饋給用戶的檢索方式。
五、Elasticsearch 應(yīng)用場(chǎng)景
站點(diǎn)搜索、系統(tǒng)搜索、數(shù)據(jù)分析。。。
- 維基百科,類似百度百科,牙膏,牙膏的維基百科,全文檢索,高亮,搜索推薦
- The Guardian(國(guó)外新聞網(wǎng)站),類似搜狐新聞,用戶行為日志(點(diǎn)擊,瀏覽,收藏,評(píng)論)+社交網(wǎng)絡(luò)數(shù)據(jù)(對(duì)某某新聞的相關(guān)看法),數(shù)據(jù)分析,給到每篇新聞文章的作者,讓他知道他的文章的公眾反饋(好,壞,熱門,垃圾,鄙視,崇拜)
- Stack Overflow(國(guó)外的程序異常討論論壇),IT問(wèn)題,程序的報(bào)錯(cuò),提交上去,有人會(huì)跟你討論和回答,全文檢索,搜索相關(guān)問(wèn)題和答案,程序報(bào)錯(cuò)了,就會(huì)將報(bào)錯(cuò)信息粘貼到里面去,搜索有沒(méi)有對(duì)應(yīng)的答案
- GitHub(開(kāi)源代碼管理),搜索上千億行代碼
- 電商網(wǎng)站,檢索商品
- 日志數(shù)據(jù)分析,logstash采集日志,ES進(jìn)行復(fù)雜的數(shù)據(jù)分析(ELK技術(shù),elasticsearch+logstash+kibana)
- 商品價(jià)格監(jiān)控網(wǎng)站,用戶設(shè)定某商品的價(jià)格閾值,當(dāng)?shù)陀谠撻撝档臅r(shí)候,發(fā)送通知消息給用戶,比如說(shuō)訂閱牙膏的監(jiān)控,如果高露潔牙膏的家庭套裝低于50塊錢,就通知我,我就去買
- BI系統(tǒng),商業(yè)智能,Business Intelligence。比如說(shuō)有個(gè)大型商場(chǎng)集團(tuán),BI,分析一下某某區(qū)域最近3年的用戶消費(fèi)金額的趨勢(shì)以及用戶群體的組成構(gòu)成,產(chǎn)出相關(guān)的數(shù)張報(bào)表,**區(qū),最近3年,每年消費(fèi)金額呈現(xiàn)100%的增長(zhǎng),而且用戶群體85%是高級(jí)白領(lǐng),開(kāi)一個(gè)新商場(chǎng)。ES執(zhí)行數(shù)據(jù)分析和挖掘,Kibana進(jìn)行數(shù)據(jù)可視化國(guó)內(nèi)
- 國(guó)內(nèi):站內(nèi)搜索(電商,招聘,門戶,等等),IT系統(tǒng)搜索(OA,CRM,ERP,等等),數(shù)據(jù)分析(ES熱門的一個(gè)使用場(chǎng)景)
參考:
Elasticsearch 中文社區(qū)
Elasticsearch 中文文檔
Elasticsearch: 權(quán)威指南
Elasticsearch-PHP
Elasticsearch 請(qǐng)求示例
Elasticsearch的術(shù)語(yǔ)原理概念及應(yīng)用場(chǎng)景(一)
Elasticsearch基礎(chǔ)1——搜索引擎發(fā)展史和工作流程、es/es-head/kibana的基礎(chǔ)安裝