国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Elasticsearch入門(一)

Imfan / 3002人閱讀

摘要:倒排索引我們將需要掃描檢索的內(nèi)容的每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當用戶查詢時,根據(jù)事先建立的索引進行查找,并將查找的結(jié)果反饋給用戶。

ES概述 1、什么是Elasticsearch (是什么?)

什么是ElasticSearch呢,首先看看百度百科上的解釋:

ElasticSearch是一個基于的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口;ElasticSearch 是一個分布式、高擴展、高實時的搜索與數(shù)據(jù)分析引擎。它能很方便的使大量數(shù)據(jù)具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸縮性,能使數(shù)據(jù)在生產(chǎn)環(huán)境變得更有價值。

從上面的解釋中,我們可以知道:

ES是一個基于Lucene的實時分布式搜索和分析引擎,但隱藏了Lucene的復(fù)雜性,為使用者提供了簡單易用的restful api接口、java api接口(包括其他語言的api接口)。

這里有幾個概念我們需要了解:

1.1什么是搜索?

講到搜索,大部分人可能會想到百度、谷歌等,比如我想看電影,一般會先打開百度,然后輸入電影名,進行搜索;
搜索,就是在任何場景下,找尋你想要的信息,這個時候,會輸入一段你要搜索的關(guān)鍵字,然后就期望找到這個關(guān)鍵字相關(guān)的有些信息,如:
1)互聯(lián)網(wǎng)的搜索:電商網(wǎng)站(天貓),招聘網(wǎng)站(Boss),各種app
2)IT系統(tǒng)的搜索:OA系統(tǒng),會議管理等。

1.2 Lucene和倒排索引

Lucene說白了就是一個jar包,里面包含了封裝好的各種建立倒排索引,以及進行搜索的代碼,包括各種算法。我們在開發(fā)的時候,引入lucene jar,然后基于lucene的api進行去進行開發(fā)就可以了。
倒排索引:我們將需要掃描檢索的內(nèi)容的每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當用戶查詢時,根據(jù)事先建立的索引進行查找,并將查找的結(jié)果反饋給用戶。我們可以想象成通過字典中的檢索字表查字的過程。

2、Elasticsearch的適用場景 (能做什么?)

1)新聞網(wǎng)站,用戶行為日志(點擊,瀏覽,收藏等)+ 社交網(wǎng)絡(luò)數(shù)據(jù)(對某某新聞的相關(guān)看法),數(shù)據(jù)分析,給到每篇新聞文章的作者,讓他知道他的文章的公眾反饋(好,壞,熱門,垃圾,鄙視,崇拜)。
2)Stack Overflow(國外的程序異常討論論壇),IT問題,程序的報錯,提交上去,有人會跟你討論和回答,全文檢索,搜索相關(guān)問題和答案,程序報錯了,就會將報錯信息粘貼到里面去,搜索有沒有對應(yīng)的答案。
3)國內(nèi):站內(nèi)搜索(電商,招聘,門戶,等等),IT系統(tǒng)搜索(OA,CRM,ERP,等等),數(shù)據(jù)分析(ES熱門的一個使用場景)。

3、Elasticsearch的特點

1)可以上百臺服務(wù)器,處理PB級數(shù)據(jù),服務(wù)大公司;也可以運行在單機上,服務(wù)小公司;
2)Elasticsearch不是什么新技術(shù),主要是將全文檢索、數(shù)據(jù)分析以及分布式技術(shù),合并在了一起,才形成了獨一無二的ES;
3)對用戶而言,是透明的,開箱即用,非常簡單,作為中小型的應(yīng)用,直接3分鐘部署一下ES,就可以作為生產(chǎn)環(huán)境的系統(tǒng)來使用了;
4)數(shù)據(jù)庫的功能面對很多領(lǐng)域是不夠用的(事務(wù),還有各種聯(lián)機事務(wù)型的操作);特殊的功能,比如全文檢索,同義詞處理,相關(guān)度排名,復(fù)雜數(shù)據(jù)分析,海量數(shù)據(jù)的近實時處理;Elasticsearch作為傳統(tǒng)數(shù)據(jù)庫的一個補充,提供了數(shù)據(jù)庫所不能提供的很多功能。

二、ES使用 1、工作原理

當我們啟動ElasticSearch后,它會利用多播或者單播模式去集群中尋找其它節(jié)點,并和節(jié)點建立連接。整個過程如下圖所示:

2、核心概念 2.1 近實時

近實時,從寫入數(shù)據(jù)到數(shù)據(jù)可以被搜索到有一個小延遲(大概1秒);基于es執(zhí)行搜索和分析可以達到秒級。

2.2 集群

集群包含多個節(jié)點,可以配置每個節(jié)點屬于哪個集群(集群名稱,默認是elasticsearch),對于中小型應(yīng)用來說,剛開始一個集群可能就一個節(jié)點。

2.3 Node(節(jié)點)

集群中的一個節(jié)點,節(jié)點也有一個名稱(默認隨機分配的),節(jié)點名稱很重要(在執(zhí)行運維管理操作的時候),默認節(jié)點會去加入一個名稱為“elasticsearch”的集群,如果直接啟動一堆節(jié)點,那么它們會自動組成一個elasticsearch集群。

2.4 Index(索引-數(shù)據(jù)庫)

索引包含一堆有相似結(jié)構(gòu)的文檔數(shù)據(jù),比如可以有一個客戶索引,商品分類索引,索引有一個名稱。一個index就代表了一類類似的或者相同的document。比如說建立一個商品索引,里面可能就存放了所有的商品數(shù)據(jù),類似傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)庫。

2.5 Type(類型-表)

每個索引里都可以有一個或多個type,type是index中的一個邏輯數(shù)據(jù)分類,一個type下的document,都有相同的field,比如博客系統(tǒng),有一個索引,可以定義用戶數(shù)據(jù)type,博客數(shù)據(jù)type,評論數(shù)據(jù)type,類似傳統(tǒng)數(shù)據(jù)庫中的表。

2.6 Document(文檔-行)

文檔是es中的最小數(shù)據(jù)單元,一個document可以是一條客戶數(shù)據(jù),一條商品分類數(shù)據(jù),通常用JSON數(shù)據(jù)結(jié)構(gòu)表示,類似傳統(tǒng)數(shù)據(jù)庫中的一條數(shù)據(jù)記錄,如:

{
  "product_id": "1",
  "product_name": "黑人牙膏",
  "product_desc": "高效美白",
  "category_id": "2",
  "category_name": "生活用品"
}
2.7 Field(字段-列)

Field是Elasticsearch的最小單位。一個document里面有多個field,每個field就是一個數(shù)據(jù)字段。

2.8 mapping(映射-約束)

數(shù)據(jù)如何存放到索引對象上,需要有一個映射配置,包括:數(shù)據(jù)類型、是否存儲、是否分詞等。創(chuàng)建Mapping 的代碼示例如下:

client.indices.putMapping({
????index : "blog",
????type : "article",
????body : {
????????article: {
????????????properties: {
????????????????id: {
????????????????????type: "string",
????????????????????analyzer: "ik",
????????????????????store: "yes",
????????????????},
????????????????title: {
????????????????????type: "string",
????????????????????analyzer: "ik",
????????????????????store: "no",
????????????????},
????????????????content: {
????????????????????type: "string",
????????????????????analyzer: "ik",
????????????????????store: "yes",
????????????????}
????????????}
????????}
????}
});
2.9分片和復(fù)制

分片:一個索引可以存儲超出單個結(jié)點硬件限制的大量數(shù)據(jù)。比如,一個具有10億文檔的索引占據(jù)1TB的磁盤空間,而任一節(jié)點都沒有這樣大的磁盤空間;或者單個節(jié)點處理搜索請求,響應(yīng)太慢。
為了解決這個問題,Elasticsearch提供了將索引劃分成多份的能力,這些份就叫做分片。當你創(chuàng)建一個索引的時候,你可以指定你想要的分片的數(shù)量。每個分片本身也是一個功能完善并且獨立的“索引”,這個“索引”可以被放置到集群中的任何節(jié)點上。
分片之所以重要,主要有兩方面的原因:
1) 允許你水平分割/擴展你的內(nèi)容容量
2) 允許你在分片(潛在地,位于多個節(jié)點上)之上進行分布式的、并行的操作,進而提高性能/吞吐量
至于一個分片怎樣分布,它的文檔怎樣聚合回搜索請求,是完全由Elasticsearch管理的,對于作為用戶的你來說,這些都是透明的。

復(fù)制:在一個網(wǎng)絡(luò)/云的環(huán)境里,失敗隨時都可能發(fā)生,在某個分片/節(jié)點不知怎么的就處于離線狀態(tài),或者由于任何原因消失了。這種情況下,有一個故障轉(zhuǎn)移機制是非常有用并且是強烈推薦的。為此目的,Elasticsearch允許你創(chuàng)建分片的一份或多份拷貝,這些拷貝叫做復(fù)制分片,或者直接叫復(fù)制。復(fù)制之所以重要,主要有兩方面的原因:
1)在分片/節(jié)點失敗的情況下,提供了高可用性。因為這個原因,注意到復(fù)制分片從不與原/主要(original/primary)分片置于同一節(jié)點上是非常重要的。
2)擴展你的搜索量/吞吐量,因為搜索可以在所有的復(fù)制上并行運行
總之,每個索引可以被分成多個分片。一個索引也可以被復(fù)制0次或多次。一旦復(fù)制了,每個索引就有了主分片(作為復(fù)制源的原來的分片)和復(fù)制分片(主分片的拷貝)之別。分片和復(fù)制的數(shù)量可以在索引創(chuàng)建的時候指定。在索引創(chuàng)建之后,你可以在任何時候動態(tài)地改變復(fù)制數(shù)量,但是不能改變分片的數(shù)量。
默認情況下,Elasticsearch中的每個索引被分片5個主分片和1個復(fù)制,這意味著,如果你的集群中至少有兩個節(jié)點,你的索引將會有5個主分片和另外5個復(fù)制分片(1個完全拷貝),這樣的話每個索引總共就有10個分片。一個索引的多個分片可以存放在集群中的一臺主機上,也可以存放在多臺主機上,這取決于你的集群機器數(shù)量。主分片和復(fù)制分片的具體位置是由ES內(nèi)在的策略所決定的。

3、ES安裝和插件使用 3.1 Elasticsearch下載安裝
鏈接: https://www.elastic.co/products/elasticsearch 

3.2 常用插件

Elasticsearch只是提供各種后端api,為了直觀使用,安裝好Elasticsearch后,需要安裝幾個插件:
1)Elasticsearch-Head插件,可以進行界面化操作的集群管理工具,

    下載:https://github.com/mobz/elasticsearch-head

安裝好head插件后,輸入http://ip:9200,如果能看到下面的界面,代表你已經(jīng)安裝成功,可以開心快樂的使用了:

此時我們可以看到訪問地址后面,有個“集群健康值”,但由于我這里ES服務(wù)還沒啟動,所以這里是未連接的狀態(tài);
集群健康值的幾種狀態(tài)如下:

綠色,最健康的狀態(tài),代表所有的分片包括備份都可用
黃色,基本的分片可用,但是備份不可用(也可能是沒有備份)
紅色,部分的分片可用,表明分片有一部分損壞。此時執(zhí)行查詢部分數(shù)據(jù)仍然可以查到,遇到這種情況,還是趕快解決比較好
灰色,未連接到elasticsearch服務(wù)

我們啟動Es服務(wù),重新打開head插件看看,此時,健康值處于綠色狀態(tài):

2)IK中文分詞器,下載:https://github.com/medcl/elas...
IK分詞器有兩種拆分方式

a、ik_smart: 將文本做最粗粒度的拆分
b、ik_max_word: 將文本做最細粒度的拆分

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/75072.html

相關(guān)文章

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<