日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch概述、ES概念、什么是搜索、全文检索、Elasticsearch功能,什么是distributed document store(来自网络+学习资料)

發(fā)布時間:2024/9/27 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch概述、ES概念、什么是搜索、全文检索、Elasticsearch功能,什么是distributed document store(来自网络+学习资料) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.Elasticsearch概述

Elasticsearch是一個分布式、高性能、高可用、可伸縮的搜索和分析系統(tǒng)。
以下是來自百度的介紹:
ElasticSearch是一個基于Lucene的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當前流行的企業(yè)級搜索引擎。設(shè)計用于云計算中,能夠達到實時搜索,穩(wěn)定,可靠,快速,安裝使用方便。
我們建立一個網(wǎng)站或應(yīng)用程序,并要添加搜索功能,但是想要完成搜索工作的創(chuàng)建是非常困難的。我們希望搜索解決方案要運行速度快,我們希望能有一個零配置和一個完全免費的搜索模式,我們希望能夠簡單地使用JSON通過HTTP來索引數(shù)據(jù),我們希望我們的搜索服務(wù)器始終可用,我們希望能夠從一臺開始并擴展到數(shù)百臺,我們要實時搜索,我們要簡單的多租戶,我們希望建立一個云的解決方案。因此我們利用Elasticsearch來解決所有這些問題以及可能出現(xiàn)的更多其它問題。

2.概念

cluster
代表一個集群,集群中有多個節(jié)點,其中有一個為主節(jié)點,這個主節(jié)點是可以通過選舉產(chǎn)生的,主從節(jié)點是對于集群內(nèi)部來說的。es的一個概念就是去中心化,字面上理解就是無中心節(jié)點,這是對于集群外部來說的,因為從外部來看es集群,在邏輯上是個整體,你與任何一個節(jié)點的通信和與整個es集群通信是等價的。
shards
代表索引分片,ES可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節(jié)點上。構(gòu)成分布式搜索。分片的數(shù)量只能在索引創(chuàng)建前指定,并且索引創(chuàng)建后不能更改。
replicas
代表索引副本,es可以設(shè)置多個索引的副本,副本的作用一是提高系統(tǒng)的容錯性,當某個節(jié)點某個分片損壞或丟失時可以從副本中恢復(fù)。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。
recovery
代表數(shù)據(jù)恢復(fù)或叫數(shù)據(jù)重新分布,ES在有節(jié)點加入或退出時會根據(jù)機器的負載對索引分片進行重新分配,掛掉的節(jié)點重新啟動時也會進行數(shù)據(jù)恢復(fù)。
river
代表es的一個數(shù)據(jù)源,也是其它存儲方式(如:數(shù)據(jù)庫)同步數(shù)據(jù)到es的一個方法。它是以插件方式存在的一個es服務(wù),通過讀取river中的數(shù)據(jù)并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway
代表ES索引快照的存儲方式,ES默認是先把索引存放到內(nèi)存中,當內(nèi)存滿了時再持久化到本地硬盤。gateway對索引快照進行存儲,當這個ES集群關(guān)閉再重新啟動時就會從gateway中讀取索引備份數(shù)據(jù)。ES支持多種類型的gateway,有本地文件系統(tǒng)(默認),分布式文件系統(tǒng),Hadoop的HDFS和amazon3的s3云存儲服務(wù)。
discovery.zen
代表es的自動發(fā)現(xiàn)節(jié)點機制,es是一個基于p2p的系統(tǒng),它先通過廣播尋找存在的節(jié)點,再通過多播協(xié)議來進行節(jié)點之間的通信,同時也支持點對點的交互。
Transport
代表es內(nèi)部節(jié)點或集群與客戶端的交互方式,默認內(nèi)部是使用tcp協(xié)議進行交互,同時它支持http協(xié)議(json格式)、thrift、servlet、memcached、zeroMQ等的傳輸協(xié)議(通過插件方式集成)

3 什么是搜索

百度:我們比如說想找尋任何的信息的時候,就會上百度去搜索一下,比如說找一部自己喜歡的電影,或者說找一本喜歡的書,或者找一條感興趣的新聞(提到搜索的第一印象)

垂直搜索(站內(nèi)搜索)
互聯(lián)網(wǎng)的搜索: 電商網(wǎng)站,招聘網(wǎng)站,新聞網(wǎng)站,各種app
IT系統(tǒng)的搜索:OA軟件,辦公自動化軟件,會議管理,日程管理,項目管理,員工管理,搜索“張三”,“張三兒”,“張小三”;有個電商網(wǎng)站,賣家,后臺管理系統(tǒng),搜索“牙膏”,訂單,“牙膏相關(guān)的訂單”

搜索,就是在任何場景下,找尋你想要的信息,這個時候,會輸入一段你要搜索的關(guān)鍵字,然后就期望找到這個關(guān)鍵字相關(guān)的有些信息

搜索,就是在任何場景下,找尋你想要的信息,這個時候,會輸入一段你要搜索的關(guān)鍵字,然后就期望找到這個關(guān)鍵字相關(guān)的有些信息。

4.如果用數(shù)據(jù)庫做搜索會怎樣?

做軟件開發(fā)的話,或者對IT、計算機有一定的了解的話,都知道,數(shù)據(jù)都是存儲在數(shù)據(jù)庫里面的,比如說電商網(wǎng)站的商品信息,招聘網(wǎng)站的職位信息,新聞網(wǎng)站的新聞信息,等等吧。所以說,很自然的一點,如果說從技術(shù)的角度去考慮,如何實現(xiàn)如說,電商網(wǎng)站內(nèi)部的搜索功能的話,就可以考慮,去使用數(shù)據(jù)庫去進行搜索。

1、比方說,每條記錄的指定字段的文本,可能會很長,比如說“商品描述”字段的長度,有長達數(shù)千個,甚至數(shù)萬個字符,這個時候,每次都要對每條記錄的所有文本進行掃描,懶判斷說,你包不包含我指定的這個關(guān)鍵詞(比如說“牙膏”)
2、還不能將搜索詞拆分開來,盡可能去搜索更多的符合你的期望的結(jié)果,比如輸入“生化機”,就搜索不出來“生化危機”

用數(shù)據(jù)庫來實現(xiàn)搜索,是不太靠譜的。通常來說,性能會很差的。

5、什么是全文檢索和Lucene?

(1)全文檢索,倒排索引
(2)lucene,就是一個jar包,里面包含了封裝好的各種建立倒排索引,以及進行搜索的代碼,包括各種算法。我們就用java開發(fā)的時候,引入lucene jar,然后基于lucene的api進行去進行開發(fā)就可以了。用lucene,我們就可以去將已有的數(shù)據(jù)建立索引,lucene會在本地磁盤上面,給我們組織索引的數(shù)據(jù)結(jié)構(gòu)。另外的話,我們也可以用lucene提供的一些功能和api來針對磁盤上額。

6、什么是Elasticsearch

Elasticsearch的好處:
1、自動維護數(shù)據(jù)的分布到多個節(jié)點的索引的建立,還有搜索請求分布到多個節(jié)點的執(zhí)行。
2、自動維護數(shù)據(jù)的冗余副本,一些機器宕機了,不會丟失任何的數(shù)據(jù)。
3、封裝了更多的高級功能,以給我們提供更多高級的支持。讓我們快速的開發(fā)應(yīng)用,開發(fā)更加復(fù)雜的應(yīng)用:復(fù)雜的搜索功能,聚合分析的功能,基于地理位置的搜索(距離我當前位置1公里內(nèi)的烤肉店)

7、什么是distributed document store

Elasticsearch在跑起來以后,其實起到的第一個最核心的功能,就是一個分布式的文檔數(shù)據(jù)存儲系統(tǒng)。ES是分布式的。文檔數(shù)據(jù)存儲系統(tǒng)。文檔數(shù)據(jù),存儲系統(tǒng)。
文檔數(shù)據(jù):es可以存儲和操作json文檔類型的數(shù)據(jù),而且這也是es的核心數(shù)據(jù)結(jié)構(gòu)。
存儲系統(tǒng):es可以對json文檔類型的數(shù)據(jù)進行存儲,查詢,創(chuàng)建,更新,刪除,等等操作。其實已經(jīng)起到了一個什么樣的效果呢?其實ES滿足了這些功能,就可以說已經(jīng)是一個NoSQL的存儲系統(tǒng)了。

圍繞著document在操作,其實就是把es當成了一個NoSQL存儲引擎,一個可以存儲文檔類型數(shù)據(jù)的存儲系統(tǒng),在操作里面的document。

es可以作為一個分布式的文檔存儲系統(tǒng),所以說,我們的應(yīng)用系統(tǒng),是不是就可以基于這個概念,去進行相關(guān)的應(yīng)用程序的開發(fā)了。

什么類型的應(yīng)用程序呢?

(1)數(shù)據(jù)量較大,es的分布式本質(zhì),可以幫助你快速進行擴容,承載大量數(shù)據(jù)
(2)數(shù)據(jù)結(jié)構(gòu)靈活多變,隨時可能會變化,而且數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系,非常復(fù)雜,如果我們用傳統(tǒng)數(shù)據(jù)庫,那是不是很坑,因為要面臨大量的表
(3)對數(shù)據(jù)的相關(guān)操作,較為簡單,比如就是一些簡單的增刪改查,用我們之前講解的那些document操作就可以搞定
(4)NoSQL數(shù)據(jù)庫,適用的也是類似于上面的這種場景

舉個例子,比如說像一些網(wǎng)站系統(tǒng),或者是普通的電商系統(tǒng),博客系統(tǒng),面向?qū)ο蟾拍畋容^復(fù)雜,但是作為終端網(wǎng)站來說,沒什么太復(fù)雜的功能,就是一些簡單的CRUD操作,而且數(shù)據(jù)量可能還比較大。這個時候選用ES這種NoSQL型的數(shù)據(jù)存儲,比傳統(tǒng)的復(fù)雜的功能務(wù)必強大的支持SQL的關(guān)系型數(shù)據(jù)庫,更加合適一些。無論是性能,還是吞吐量,可能都會更好。

總結(jié)

以上是生活随笔為你收集整理的Elasticsearch概述、ES概念、什么是搜索、全文检索、Elasticsearch功能,什么是distributed document store(来自网络+学习资料)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。