Elasticsearch總結
ElasticSearch是一個基于Lucene的搜尋伺服器,它提供了一個分布式的全文搜尋引擎和資料分析引擎,能夠實作全文檢索;結構化檢索;資料分析,隐藏了複雜性使得操作變得更加簡便靈活,elasticsearch提供了簡單易用的restuful api接口以及java接口,Lucene:簡單來說,就是一個jar包,裡面包含了封裝好的各種建立反向索引,以及進行搜尋的代碼,包含各種算法,我們用java開發的時候,引入lucene.jar就可以進行開發了。
Elasticsearch的特點:
分布式的文檔存儲引擎,分布式的搜尋引擎和分析引擎,
天然索引,
ES 所有資料都是預設進行索引的,這點和mysql正好相反,mysql是預設不加索引,要加索引必須特别說明,ES隻有不加索引才需要說明。
天然分片,天然叢集 ,
es 把資料分成多個shard,下圖中的P0-P2,多個shard可以組成一份完整的資料,這些shard可以分布在叢集中的各個機器節點中。随着資料的不斷增加,叢集可以增加多個分片,把多個分片放到多個機子上,已達到負載均衡,橫向擴充。
Elasticsearch内的基本概念:
Near Realtime(NRT) (聶味兒胎模)近實時
es從資料寫入到資料被搜尋到有一個延時(大概1秒),基于es執行的搜尋和分析 可以達到妙級
節點(Node)和叢集(Cluster)
叢集是一個或多個節點(伺服器)的集合, 這些節點共同儲存整個資料,并在所有節點上提供聯合索引和搜尋功能。一個叢集由一個唯一叢集ID确定,并指定一個叢集名(預設為“elasticsearch”)。該叢集名非常重要,因為節點可以通過這個叢集名加入叢集,一個節點隻能是叢集的一部分。
(document)文檔
es中最小的資料單元,有json串組成,裡面包含多個field,每個field即是一個資料字段。
(index)索引
包含一堆具有相似結構的文檔資料,一個索引預設有5個primary shard,一個primary shard 對應一個replica shard
(type)類型
每個索引有一個或者多個type,type是index中的一個邏輯資料分類,一個type下的document,應該都有相同field
(Replica)副本
為了提高查詢吞吐量或實作高可用性,可以使用分片副本。副本(replica)隻是一個分片的精确複制,每個分片可以有零個或多個副本。
(Shards)分片
當有大量的文檔時,由于記憶體的限制、硬碟能力、處理能力不足、無法足夠快地響應用戶端請求等,一個節點可能不夠。在這種情況下,資料可以分為較小的稱為分片的部分。每個分片可以放在不同的伺服器上,是以,資料可以在叢集的節點中傳播。
(Field)字段
ElasticSearch裡的最小單元 相當于資料的某一列,類似于json裡一個鍵。
(Mapping)映射
模式映射(schema mapping,或簡稱映射)用于定義索引結構。Elasticsearch在映射中存儲有關字段的資訊。映射在檔案中以JSON對象傳送。
elasticsearch和資料庫對比
索引(indices)--------------------------------Databases 資料庫
類型(type)-----------------------------Table 資料表
文檔(Document)----------------Row 行
字段(Field)-------------------Columns 列
Kibana
Kibana是一個基于Node.js的Elasticsearch索引庫資料統計工具,可以利用Elasticsearch的聚合功能,生成各種圖表,如柱形圖,線狀圖,餅圖等。
而且還提供了操作Elasticsearch索引資料的控制台,并且提供了一定的API提示,使得我們是用學習Elasticsearch更加的友善快捷
啟動kibana,打開解壓後的檔案夾直接輕按兩下運作elasticsearch.bat檔案就可以了
ik分詞器
目前ik分詞器是屬于Elaseticsearch内的插件,版本也與Elasticsearch保持一緻
啟動ik分詞器前需要去config内的kibana.yml進行修改檔案,之後輕按兩下運作以kibana.bat結尾的檔案就可以了
分詞器是在搜尋的查詢時根據詞語來進行分詞,在根據分詞進行搜尋。