0102-每特教育學院螞蟻課堂4期分布式日志收集elasticsearch高可用集群原理分析分片_第1頁
0102-每特教育學院螞蟻課堂4期分布式日志收集elasticsearch高可用集群原理分析分片_第2頁
0102-每特教育學院螞蟻課堂4期分布式日志收集elasticsearch高可用集群原理分析分片_第3頁
0102-每特教育學院螞蟻課堂4期分布式日志收集elasticsearch高可用集群原理分析分片_第4頁
0102-每特教育學院螞蟻課堂4期分布式日志收集elasticsearch高可用集群原理分析分片_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Elasticsearch 簡單介紹Elasticsearch (ES)是一個基于Lucene 構(gòu)建的開源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 還是一個分布式文檔數(shù)據(jù)庫,其中每個字段均是被索引的數(shù)據(jù)且可被搜索,它能夠擴展至數(shù)以百計的服務(wù)器以及處理 PB 級的數(shù)據(jù)。它可以在很短的時間內(nèi)在儲、搜索和分析大量的數(shù)據(jù)。它通常作為具有復雜搜索場景情況下的發(fā)。Elasticsearch 就是為高可用和可擴展而生的??梢酝ㄟ^購置性能更強的服務(wù)器來完成。Elasticsearch 優(yōu)勢橫向可擴展性:只需要增加臺服務(wù)器,做一點兒配置,啟動一下Elasticsearch 就可以并

2、入集群。分片機制提供更好的分布性:同一個索引分成多個分片(sharding),這點類似于 HDFS 的塊機制;分而治之的方式可處理效率。高可用:提供(replica)機制,一個分片可以設(shè)置多個,使得某臺服務(wù)器在宕機的情況下,集群仍舊可以照常運行,并會把服務(wù)器宕機丟失的數(shù)據(jù)信息恢復到其他可用節(jié)點上??谑褂煤唵?共需一條命令就可以引擎。文件,然后很快就能搭建一一個站內(nèi)搜索Elasticsearch 應用場景大型分布式日志分析系統(tǒng) ELK示數(shù)據(jù))大型商品搜索系統(tǒng)、網(wǎng)盤搜索引擎等。結(jié)構(gòu)ElasticsearchElasticsearch 是文件,Elasticsearch 是面向文檔型數(shù)據(jù)庫,一條數(shù)據(jù)

3、在這里就是一個文檔,用 JSON 作為文檔序列化的格式,比如下面這條用戶數(shù)據(jù):關(guān)系數(shù)據(jù)庫Elasticsearch 數(shù)據(jù)庫 表 索引(Index) 行 列(Columns) 類型(type) 文檔(Docments) 字段(Fields)Linux 環(huán)境安裝 Elasticsearch1、 安裝 JDK 環(huán)境變量2、elasticsearch 安裝包elasticsearch 安裝包文檔注意:linux 安裝內(nèi)存建議 1g 內(nèi)存以上3、 上傳 elasticsearch 安裝包4、 解壓 elasticsearchexport JAVA_HOME=/usr/local/jdk1.8.0_181

4、 export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarsource /etc/profilename :yushengjun,sex :0,age :25elasticsearch(日志)+logstash(收集日志)+kibana(展5、 修改 elasticsearch.ymlnetwork.host: 51http.port: 92006、 啟動 elasticsearch 報錯Cd /usr/local/elasticsearch-6.4.3/bin

5、./elasticsearchcan not run elasticsearch as root解決方案:因為安全問題 elasticsearch不讓用 root 用戶直接運行,所以要創(chuàng)建新用戶第一步:liunx 創(chuàng)建新用戶 adduser然后給創(chuàng)建的用戶加passwd輸入兩次。第二步:切換剛才創(chuàng)建的用戶 su然后執(zhí)行 elasticsearch 會顯示 Permisdenied 權(quán)限不足。第三步:給新建的賦權(quán)限,od 777 * 這個不行,因為這個用戶本身就沒限,肯定自己不能給自己付權(quán)限。所以要用 root 用戶登錄付權(quán)限。第四步:root 給賦權(quán)限,n -R/你的 elasticsearc

6、h 安裝目錄。然后執(zhí)行成功。創(chuàng)建一個分組groupadd esmayiktuseradd esyushengjun -g esmayikt -p 123456n -R esyushengjun:esmayikt elasticsearch-6 4 3 su esyushengjun 切換用戶繼續(xù)報錯bootstrap checks failed max virtual memory areas vm max_map_count 65530 isvi /etc/sysctl confvm max_map_count=655360 sysctl pmax file descriptors 4096

7、 for elasticsearch pros is too low, increase toeast 65536 vi /etc/security/limits confsoft nofile 65536hard nofile 131072soft nproc 2048hard nproc 4096tar -zxvf elasticsearch-6.4.3.tar.gz7、elasticsearch關(guān)閉systemctlstopfirewalld.service9300 與 9200 區(qū)別9300 端口: ES 節(jié)點之間通訊使用9200 端口: ES 節(jié)點 和 外部 通訊使用Linux 環(huán)境

8、安裝 KibanaKibana 是一個開源的分析和可視化你用 Kibana 來搜索,查看,并和,設(shè)計用于和Elasticsearch 一起工作。在Elasticsearch 索引中的數(shù)據(jù)進行交互。你可以輕松地執(zhí)行高級數(shù)據(jù)分析,并且以各種圖標、表格和地圖的形式可視化數(shù)據(jù)。 Kibana 使得理解大量數(shù)據(jù)變得很容易。它簡單的、基于瀏覽器的界面使你能夠快速創(chuàng)建和共享動態(tài)儀表板,實時顯示Elasticsearch 查詢的變化。重啟服務(wù)器即可Kibana 環(huán)境安裝Tar-zxvf kibana-6.4.3-linux-x86_64.tar.gzvim config/kibana.yml# 將默認配置改成

9、如下:servort: 5601server.host: 51elasticsearch.url: http:/ 51:9200啟動 Kibana./bin/kibanaKibana 實現(xiàn)增刪改查#創(chuàng)建索引 PUT /mymayikt#查詢索引 GET /mymayikt#添加文檔 /索引名稱/類型/id PUT /mymayikt/user/1name:yushengjun, sex:0,age:22#查詢文檔GET /mymayikt/user/1本控制Elasticsearc1.為什么要進行版本控制為了保證數(shù)據(jù)再多線程操作下的準確性2.悲觀鎖和樂觀鎖悲觀鎖:假設(shè)會發(fā)生并發(fā),一切可能數(shù)據(jù)準

10、確性的操作悲觀鎖:假設(shè)不會發(fā)生并發(fā),只在提交操作是檢查是否數(shù)據(jù)完整性。3.內(nèi)部版本控制和外部版本控制內(nèi)部版本控制:_ver自增長,修改數(shù)據(jù)后,_ver會自動的加 1外部版本控制:為了保持_ver與外部版本控制的數(shù)值一致使用 ver_type=external 檢查數(shù)據(jù)當前的 ver值是否小于請求中的ver值SpringBoot 整合 Elasticsearchmaven 依賴.springframework.bootspring-boot-startarentPUT /mymayikt/user/1?ver=2name:yushengjun, sex:0,age:22#刪除索引 DELETE

11、/mymayiktapplication.yml實體類層(indexName = mymayikt, type = user) Datapublic claserEntity Idprivate String id;spring:data:elasticsearch:#集群名稱 cluster-name: myes #地址cluster-nodes: 51:93002.0.0.RELEASE .springframework.bootspring-boot-starter-web.springframework.bootspring-boot-starter-data-elasticsearc

12、jectlomboklombok類層控制器層啟動項目SpringBootApplicationEnableElasticsearchReitories(basePackages = com.mayikt.reitory)public class AppEs RestControllerpublic class EsController Autowiredprivate UserReiory userReiory;RequestMap(/addUser)public UserEntity addUser(RequestBody UserEntity user) return userR

13、eiory.save(user);RequestMap(/findUser)public Optional findUser(String id) return userReiory.findById(id);publicerface UserReiory extends CrudReitory private String name;privatesex;privateage;報錯以下錯誤None of the configured nodes are available:解決方案:Vi /usr/local/elasticsearch-6.4.3/config/elasticsearch.

14、yml : myes9300 與 9200 區(qū)別9300 與 9200 區(qū)別9300 端口: ES 節(jié)點之間通訊使用9200 端口: ES 節(jié)點 和 外部 通訊使用9300 是 TCP 協(xié)議端,ES 集群之間通訊端ES RESTful 接口端9200 端,調(diào)用 RESTful 創(chuàng)建文檔/索引/類型/id注意發(fā)送請求為t 類型查詢文檔發(fā)送 get 請求name:mayikt, age:30,sex:0public sic void main(String args) SpringApplication.run(AppEs.class, args);查詢某類型全部文檔發(fā)送 get 請求 searc

15、h倒排索引正向索引倒排索引正排索引是從文檔到關(guān)鍵字的(已知關(guān)鍵字求文檔)。(已知文檔求關(guān)鍵字),倒排索引是從關(guān)鍵字到文檔的倒排表以字或詞為關(guān)鍵字進行索引,表中關(guān)鍵字所對應的 表項 了出現(xiàn)這個字或詞的所有文檔,一個表項就是一個字表段,它 該文檔的 ID 和字符在該文檔中出現(xiàn)的位置情況。由于每個字或詞對應的文檔數(shù)量在動態(tài)變化,所以倒排表的建立和 都較為復雜,但是在查詢的時候由于可以一次得到查詢關(guān)鍵字所對應的所有文檔,所以效率高于正排表。在全文檢索中,檢索的快速響應是一個最為關(guān)鍵的性能,而索引建立由于在 進行,盡管效率相對低一些,但不會影響整個搜索引擎的效率。正排表是以文檔的 ID 為關(guān)鍵字,表中文

16、檔中每個字的位置信息,查找時掃描表中每個文檔中字的信息直到找出所有包含查詢關(guān)鍵字的文檔。這種組織方法在建立索引的時候結(jié)構(gòu)比較簡單,建立比較方便且易于;因為索引是基于文檔建立的,若是有新的文檔加入,直接為該文檔建立一個新的索引塊,掛接在原來索引文件的后面。若是有文檔刪除,則直接找到該文檔號文檔對應的索引信息,將其直接刪除。但是在查詢的時候需對所有的文檔進行掃描以確保沒有遺漏,這樣就使得檢索時間大大延長,檢索效率低下。盡管正排表的工作原理非常的簡單,但是由于其檢索效率太低,除非在特定情況下,否則實用性價值不大。文檔內(nèi)容:倒排索引會對以上文檔內(nèi)容進行分詞,可以使用關(guān)鍵次直接定位到文檔內(nèi)容。高級查詢根

17、據(jù) id 進行查詢GET /mymayikt/user/12查詢當前所有類型的文檔GET /mymayikt/user/_search單詞 ID單詞倒排列表 docId1小1,2,3,4,52一家1,2,4,53科技公司1,2,4,54開發(fā)4,55汽車1,2,4,56奧迪1,47爽1,3,48保時捷2,39保時捷 9112105序號文檔內(nèi)容1是一家科技公司創(chuàng)始汽車是奧迪 a8l,爽。2是一家科技公司的前臺,開的汽車是保時捷 9113買了的保時捷 911,爽。4是一家科技公司開發(fā)主管,開的汽車是奧迪 a6l,爽。5是一家科技公司開發(fā),開的汽車是速銳,有點慢根據(jù)多個 ID 批量查詢查詢多個 id

18、分別為 1、2 GET /mymayikt/user/_mgetids:1,2復雜條件查詢查詢?yōu)?1 歲GET /mymayikt/user/_search?q=age:21查詢30 歲-60 歲之間GET /mymayikt/user/_search?q=age30 TO 60注意:TO 一定要大寫查詢30 歲-60 歲之間 并且降序、從 0 條數(shù)據(jù)到第 1 條數(shù)據(jù)GET /mymayikt/user/_search?q=age30 TO 60&sort=age:desc&from=0&size=1查詢30 歲-60 歲之間 并且降序、從 0 條數(shù)據(jù)到第 1 條數(shù)據(jù),展示 name 和 ag

19、e 字段GET /mymayikt/user/_search?q=age30 TO 60&sort=age:desc&from=0&size=1&_source=name,ageDsl 語言查詢與過濾什么是 DSL 語言es 中的查詢請求有兩種方式,一種是簡易版的查詢,另外一種是使用 JSON 完整的請求體,叫做結(jié)構(gòu)化查詢(DSL)。由于 DSL 查詢更為直觀也更為簡易,所以大都使用這種方式。DSL 查詢是T 過去一個json,由于有很多形式。t 的請求是 json 格式的,所以存在很多靈活性,也根據(jù)名稱精確查詢#term 是代表完全匹配,即不進行分詞器分析,文檔中必須包含整個搜索的詞匯根據(jù)汽

20、車名稱模糊查詢#match 查詢相當于模糊匹配,只包含其中一部分就行Term 查詢不會對字段進行分詞查詢,會采用精確匹配。Match 會根據(jù)該字段的分詞器,進行分詞查詢。Term 與 Match 區(qū)別GET /mymayikt/user/_searchfrom: 0,size: 2,query: match: car: 奧迪GET mymayikt/user/_searchquery: term: name: xiaoming使用 filter 過濾分詞器什么是分詞器因為 Elasticsearch 中默認的標準分詞器分詞器對中文分詞不是很友好,會將中文詞語拆分成一個一個中文的漢子。因此引入中

21、文分詞器-es-ik 插件GET /mymayikt/user/_searchquery: bool: must: match_all: ,filter: range: age: gt: 21,lte: 51,from: 0,size: 10,_source: name, age演示傳統(tǒng)分詞器地址:/medcl/elasticsearch-ysis-ik/releases注意: es-ik 分詞插件版本一定要和 es 安裝的版本對應第一步:es 的 IK 插件(資料中有)命名改為 ik 插件第二步: 上傳到/usr/local/elasticsearch-6.4.3/plugins第三步: 重

22、啟 elasticsearch 即可yze yzer: standard, text: 奧迪a4ltokens: token: 奧,start_offset: 0,end_offset: 1,type: ,ition: 0,token: 迪,start_offset: 1,end_offset: 2,type: ,ition: 1,token: a4l,start_offset: 2,end_offset: 5,type: ,ition: 2自定義擴展字典在/usr/local/elasticsearch-6.4.3/plugins/ik/config 目錄下vi custom/new_wor

23、d.dic老鐵王者榮耀洪荒之力共有產(chǎn)權(quán)房yzeyzer: ik_smart,text: 奧迪tokens: token: 奧迪, start_offset: 0,end_offset: 2, type: CN_WORD,ition: 0,token: a4l, start_offset: 2,end_offset: 5, type: LETTER,ition: 1vi IKyzer.cfg.xml文檔已經(jīng)把 ElasticSearch 的概念和關(guān)系數(shù)據(jù)庫做了一個對比,索引(index)相當于數(shù)據(jù)庫,類型(type)相當于數(shù)據(jù)表,(Map)相當于數(shù)據(jù)表的表結(jié)構(gòu)。ElasticSearch 中的(

24、Map)用來定義一個文檔,可以定義所包含的字段以及字段的類型、分詞器及屬性等等。文檔就是給文檔中的字段指定字段類型、分詞器。使用 GET /mymayikt/user/_map的分類動態(tài)知道,在關(guān)系數(shù)據(jù)庫中,需要事先創(chuàng)建數(shù)據(jù)庫,然后在該數(shù)據(jù)庫實例下創(chuàng)建數(shù)據(jù)表,然后才能在該數(shù)據(jù)表中數(shù)據(jù)。而 ElasticSearch 中不需要事先定義(Map),文檔。寫入 ElasticSearch 時,會根據(jù)文檔字段自動識別類型,這種機制稱之為動態(tài)IKyzer 擴展配置custom/new_word.dic!- words_location -!- words_location -靜態(tài)在 ElasticSea

25、rch 中也可以事先定義好,包含文檔的各個字段及其類型等,這種方式稱之為靜態(tài)。ES 類型支持基本類型符串:string,string 類型包含 text 和 keyword。text:該類型被用來索引長文本,在創(chuàng)建索引前會將這些文本進行分詞,轉(zhuǎn)化為詞的組合,建立索引;允許 es 來檢索這些詞,text 類型不能用來排序和聚合。keyword:該類型不需要進行分詞,可以被用來檢索過濾、排序和聚合,keyword 類型自讀那只能用本身來進行檢索(不可用 text 分詞后的模糊檢索)。注意: keyword 類型不能分詞,Text 類型可以分詞查詢數(shù)指型:long、eger、short、byte、d

26、ouble、float日期型:date型:二進制型:binary數(shù)組類型(Array daype)復雜類型地理坐標類型(Geo-po地理形狀類型(Geo-Shdadaype):geo_po用于坐標ype):geo_sh用于類似于多邊形的復雜形狀特定類型(Spelised daypes)Pv4 類型(IPv4 daype):ip 用于 IPv4 地址Completion 類型(Completion daToken count 類型(Token count daype):completion 提供自動補全建議ype):token_count 用于統(tǒng)計做子標記的字段的 index數(shù)目,該值會一直增加

27、,不會因為過濾條件而減少mapper-murmur3附加類型(Atta索引,例如類型:通過插件,可以通過_murmur3_來計算 index 的哈希值ent daype):采用 mapper-attaents 插件,可支持_attaents_office 格式,Open Documnet 格式, ePub,HTML 等地理位置類型(Geo daypes)yzer 索引分詞器,索引創(chuàng)建的時候使用的分詞器 比如 ik_smartSearch_yzer 搜索字段的值時,指定的分詞器創(chuàng)建文檔類型并且指定類型T /mymayikt/_map/useruser: properties:age:type:e

28、ger,sex:type:eger,name: type:text,yzer:ik_smart, search_yzer:ik_smart,car:type:keyword請求地址/索引/_settingsES 集群管理ES 是如何解決高并發(fā)ES 是一個分布式全文檢索框架,隱藏了復雜的處理機制,分片負載均衡請求路由。內(nèi)容 分片機制、集現(xiàn)、ES 基本概念名詞Cluster代表一個集群,集群中有多個節(jié)點,其中有一個為主節(jié)點,這個主節(jié)點是可以通過產(chǎn)生的,主從節(jié)點是對于集群內(nèi)部來說的。es 的一個概念就是去中心化,字面上理解就是無中心節(jié)點,這是對于集群外部來說的,因為從外部來看 es 集群,在邏輯上是個整體,你與任何一個節(jié)點的通信和與整個 es 集群通信是等價的。Shards代表索引分片,es 可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節(jié)點上。并且索引創(chuàng)建后不能更改。分布式搜索。分片的數(shù)量只能在索引創(chuàng)建前指定,replicas代表索引副本,es 可以設(shè)置多個索引的副本,副本的作用一是提高系統(tǒng)的容錯性,當某個節(jié)點某個分片損壞或丟失時可以從副本中恢復。二是提高 es 的查詢效率,es 會自動對搜索請求進行負載均衡。Recovery代表數(shù)據(jù)恢復或叫數(shù)據(jù)重新分布,es 在有節(jié)點加入或退出時會根據(jù)機器的負載對索

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論