由于最近在項目中接觸使用到了ElasticSearch,從本篇博客開(kāi)始將給大家分享這款風(fēng)靡全球的產(chǎn)品。將涉及到ElasticSearch的安裝、基礎概念、基本用法、高級查詢(xún)、中文分詞器、與SpringBoot集成進(jìn)行接口開(kāi)發(fā)等相關(guān)知識。
如果大家接觸過(guò)大數據的話(huà),相信大家或多或少的聽(tīng)說(shuō)過(guò)ELK。ELK是目前非常主流的用于網(wǎng)站監控,流量監控,日志監控,集中日志管理的一套解決方案。而ElasticSearch如同ELK的心臟一般,起到一個(gè)非常核心的作用。簡(jiǎn)單來(lái)說(shuō),Logstash通過(guò)把日志收集到ElasticSearch中,進(jìn)行儲存,kibana負責可視化的展現結果。
ELK
說(shuō)白了,ElasticSearch就是一款大數據搜索引擎,那么在市面上還有哪些類(lèi)似的產(chǎn)品呢?在Java開(kāi)源界的話(huà),主要就是Lucene、Solr和ElasticSearch了。
Lucene,Java領(lǐng)域的搜索引擎鼻祖,是一個(gè)比較底層的東西,需要深厚的搜索理論基礎才可以掌握,比較復雜(它本身不是一個(gè)完整的解決方案,需要額外的開(kāi)發(fā)工作)。因此,為了方便使用,屏蔽復雜性,Solr和ElasticSearch在lucene的基礎上進(jìn)行了二次開(kāi)發(fā)。
Solr相比ElasticSearch而言擁有更加成熟的社區,比較穩定,但是隨著(zhù)數據量越來(lái)越大,對實(shí)時(shí)性要求越來(lái)越高,Solr的搜索效率在下降,而ElasticSearch卻沒(méi)有明顯的變化。因此ElasticSearch非常適合實(shí)時(shí)搜索的應用。(比如大名鼎鼎的Github的站內實(shí)時(shí)搜索就在應用ES)
另外,由于ElasticSearch提供了簡(jiǎn)單易用的Restful API,輕松的橫向擴展機制(說(shuō)白了,可以通過(guò)加機器來(lái)擴展容量),能支持PB級別的結構化或非結構化數據處理,具有強大的分布式儲存能力。
安裝比較簡(jiǎn)單,下載地址是:
https://www.elastic.co/cn/downloads/elasticsearch
下載后直接解壓,運行即可。
運行es
默認啟動(dòng)端口9200
查看es啟動(dòng)狀態(tài)
注意上面的方式是單實(shí)例的安裝,那么分布式安裝呢?
其實(shí),對于分布式安裝,無(wú)非注意下面幾個(gè)配置要點(diǎn):
指明誰(shuí)是master,誰(shuí)是slave,集群的名字,節點(diǎn)啟動(dòng)的端口(特別是在同一臺機器上模擬分布式)。
索引,含有相同屬性的文檔集合。
類(lèi)型,索引可以定義一個(gè)或者多個(gè)類(lèi)型,文檔必須屬于一個(gè)類(lèi)型。
文檔,文檔是可以被索引的基本數據單位。
看起來(lái),比較繞,我們用類(lèi)比的思路來(lái)理解:
類(lèi)比理解
索引相當于database,類(lèi)型相當于table,文檔相當于一條記錄,文檔Document是es里面最小的儲存單位。需要注意的是索引在es中的名稱(chēng)必須是英文字母小寫(xiě)且不包含中劃線(xiàn)。和索引相關(guān)的有2個(gè)高級概念,一個(gè)是分片,一個(gè)是備份。
分片:每個(gè)索引都有多個(gè)分片,每個(gè)分片是一個(gè)lucene索引。
備份:拷貝一個(gè)分片就完成了分片的備份。
假設索引的數據很大,就會(huì )造成硬盤(pán)的壓力很大,同時(shí)搜索速度也會(huì )出現瓶頸。那么可以將索引分成多個(gè)分片,從而分攤壓力。分片的同時(shí),還可以允許用戶(hù)進(jìn)行水平擴展和拆分,進(jìn)行分布式的儲存,從而提高搜索的效率。
當一個(gè)主分片出現問(wèn)題時(shí),備份的分片可以代替工作,從而提高了es的可用性。
es在默認創(chuàng )建索引時(shí),會(huì )創(chuàng )建5個(gè)分片,一個(gè)備份。
假設我們的es是一個(gè)master,2個(gè)slave,創(chuàng )建索引時(shí),走的默認配置(5個(gè)分片,1個(gè)備份),那么圖示如下:

分片和備份
圖中標綠顏色的是主分片,其他是備份的分片。
本文前面提到es提供了簡(jiǎn)單易用的Restful API來(lái)操作索引/類(lèi)型/文檔,下面介紹下基本格式:
API基本格式 http://ip:port/索引/類(lèi)型/文檔id
http常用方法 get/put/post/delete
下面,我們演示一下利用postman來(lái)創(chuàng )建一個(gè)索引和類(lèi)型:

創(chuàng )建索引和類(lèi)型

查詢(xún)索引、類(lèi)型信息
好了,本篇博客就介紹到這里,下一篇博客再來(lái)給大家介紹文檔的增刪改查操作等。
作者:張豐哲
鏈接:https://www.jianshu.com/p/1e5a31c8018c
來(lái)源:簡(jiǎn)書(shū)
簡(jiǎn)書(shū)著(zhù)作權歸作者所有,任何形式的轉載都請聯(lián)系作者獲得授權并注明出處。
聯(lián)系客服