一、elasticsearch基礎

一、下載安裝

1.1、下載
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-x86_64.rpm

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-x86_64.rpm

在這裏插入圖片描述
1.2、安裝
rpm --install elasticsearch-7.0.0-x86_64.rpm

rpm --install elasticsearch-7.0.0-x86_64.rpm

1.3、新增配置
chkconfig --add elasticsearch

chkconfig --add elasticsearch

1.4、啓動&本地檢查
service elasticsearch start

service elasticsearch start

在這裏插入圖片描述

二、常見問題

2.1、內存不夠
在這裏插入圖片描述
方案:
修改jvm.options配置文件,修改其默認值的1G,改小一點
在這裏插入圖片描述
2.2、外網訪問不了
修改elasticsearch.yml,新增一行
http.host: 0.0.0.0
在這裏插入圖片描述

三、概述

Elasticsearch 是一個分佈式、RESTful 風格的搜索和數據分析引擎,能夠解決不斷湧現出的各種用例。作爲 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。
3.1、Node和Cluster
es本質上是一個分佈式搜索引擎,允許多臺服務器的協同工作,每臺服務器可以允許運行多個es實例。單個es實例稱之爲節點node。一組節點構成一個集羣cluster
3.2、Index
es會索引所有的字段,經過處理後寫入一個反向索引,查找數據的時候,直接查找改索引。即,es數據管理的頂層就是Index(索引),和數據庫同義詞。
3.3、Document
Index裏面單條記錄稱之爲Document(文檔),許多條Document構成了一個Index。
3.4、Type
Document 可以分組,比如weather這個 Index 裏面,可以按城市分組(北京和上海),也可以按氣候分組(晴天和雨天)。這種分組就叫做 Type,它是虛擬的邏輯分組,用來過濾 Document。

四、實戰

4.1 新建和刪除Index
新建 Index,可以直接向 Elastic 服務器發出 PUT 請求。下面的例子是新建一個名叫index_test的 Index。
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述
4.2、mapping映射
在這裏插入圖片描述
在這裏插入圖片描述
4.3、和MySQL對比
在這裏插入圖片描述
(1)關係型數據庫中的數據庫(DataBase),等價於ES中的索引(Index)
(2)一個數據庫下面有N張表(Table),等價於1個索引Index下面有N多類型(Type),
(3)一個數據庫表(Table)下的數據由多行(ROW)多列(column,屬性)組成,等價於1個Type由多個文檔(Document)和多Field組成。
(4)在一個關係型數據庫裏面,schema定義了表、每個表的字段,還有表和字段之間的關係。 與之對應的,在ES中:Mapping定義索引下的Type的字段處理規則,即索引如何建立、索引類型、是否保存原始索引JSON文檔、是否壓縮原始JSON文檔、是否需要分詞處理、如何進行分詞處理等。
(5)在數據庫中的增insert、刪delete、改update、查search操作等價於ES中的增PUT/POST、刪Delete、改_update、查GET.

五、集羣

集羣高可用:
Elasticsearch 作爲一個搜索引擎,我們對它的基本要求就是存儲海量數據並且可以在非常短的時間內查詢到我們想要的信息。所以第一步我們需要保證的就是 Elasticsearch 的高可用性,什麼是高可用性呢?它通常是指,通過設計減少系統不能提供服務的時間。假設系統一直能夠提供服務,我們說系統的可用性是 100%。如果系統在某個時刻宕掉了,比如某個網站在某個時間掛掉了,那麼就可以它臨時是不可用的。所以,爲了保證 Elasticsearch 的高可用性,我們就應該儘量減少 Elasticsearch 的不可用時間。多臺集羣高可以用的情況下,Elasticsearch的信息存儲機制採用了分片機制。

分片:
英文叫做 Shard,顧名思義,分片就是對數據切分成了多個部分。我們知道 Elasticsearch 中一個索引(Index)相當於是一個數據庫,如存某網站的用戶信息,我們就建一個名爲 user 的索引。但索引存儲的時候並不是整個存一起的,它是被分片存儲的,Elasticsearch 默認會把一個索引分成五個分片,當然這個數字是可以自定義的。分片是數據的容器,數據保存在分片內,分片又被分配到集羣內的各個節點裏。當你的集羣規模擴大或者縮小時, Elasticsearch 會自動的在各節點中遷移分片,使得數據仍然均勻分佈在集羣裏,所以相當於一份數據被分成了多份並保存在不同的主機上。

副本:
英文叫做 Replica,同樣顧名思義,副本就是對原分片的複製,和原分片的內容是一樣的,Elasticsearch 默認會生成一份副本,所以相當於是五個原分片和五個分片副本,相當於一份數據存了兩份,並分了十個分片,當然副本的數量也是可以自定義的。這時我們只需要將某個分片的副本存在另外一臺主機上,這樣當某臺主機宕機了,我們依然還可以從另外一臺主機的副本中找到對應的數據。所以從外部來看,數據結果是沒有任何區別的。

健康狀態
針對一個索引,Elasticsearch 中其實有專門的衡量索引健康狀況的標誌,分爲三個等級:
green,綠色。這代表所有的主分片和副本分片都已分配。你的集羣是 100% 可用的。
yellow,黃色。所有的主分片已經分片了,但至少還有一個副本是缺失的。不會有數據丟失,所以搜索結果依然是完整的。不過,你的高可用性在某種程度上被弱化。如果更多的分片消失,你就會丟數據了。所以可把 yellow 想象成一個需要及時調查的警告。
red,紅色。至少一個主分片以及它的全部副本都在缺失中。這意味着你在缺少數據:搜索只能返回部分數據,而分配到這個分片上的寫入請求會返回一個異常。
如果你只有一臺主機的話,其實索引的健康狀況也是 yellow,因爲一臺主機,集羣沒有其他的主機可以防止副本,所以說,這就是一個不健康的狀態,因此集羣也是十分有必要的。
在這裏插入圖片描述

配置兩個節點以後,集羣
在這裏插入圖片描述

*說明:es的默認rpm安裝方式下,一些默認路徑如下
1、安裝目錄
/usr/share/elasticsearch
2、執行目錄
/usr/share/elasticsearch/bin
3、配置文件elasticsearch.yml
/etc/elasticsearch
4、data
/var/lib/elasticsearch
5、logs
/var/log/elasticsearch
*

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章