本篇介紹一些ES基本且重要的概念,這些概念是ES的核心數據庫
基本概念服務器
集羣(Cluster)網絡
一個集羣由一個或者多個節點組成。它給咱們提供索引和搜索的功能。每一個集羣是由集羣名來區分的,因此集羣名字很重要。ES的默認集羣名爲elasticsearch。一個集羣中的節點就會經過這個名字來加入集羣。 在測試環境中能夠不修改集羣名稱,可是強烈建議生產環境下修改集羣名。數據結構
節點(Node) 一個節點是一個集羣中的組成部分,它儲存你的數據而後參與提供索引和搜索的功能。它能夠是單獨的一臺服務器也能夠是同一臺服務器(ES能夠在一臺服務器上啓動多個節點實例)。 一個節點經過配置集羣名稱來自動搜索集羣並加入。默認狀況下都會自動加入「elasticsearch」這個集羣,畢竟默認的集羣名就是「elasticsearch」。自動加入集羣還須要開啓須要加入節點的自動嗅探功能。固然啓動一個節點也是能夠的。elasticsearch
索引(Index) 索引就是擁有類似特徵文檔的集合,就至關於傳統的關係型數據庫中的數據庫(database)概念。例如一個用戶的索引,一個產品的索引等等。一個索引有一個名字(必須全小寫),對文檔增刪改查的時候都須要使用這個索引,一個集羣中你能夠建立N+1個索引。分佈式
類型(Type) 一個索引中能夠定義一個或者多個類型。一個類型是你索引上的邏輯分類,至關於傳統關係型數據庫中的表(table)。不一樣的 Type 應該有類似的結構(schema),舉例來講, id 字段不能在這個組是字符串,在另外一個組是數值。這是與關係型數據庫的表的 一個區別 。性質徹底不一樣的數據(好比 products 和 logs )應該存成兩個 Index,而不是一個 Index 裏面的兩個 Type。 根據 規劃 ,Elastic 6.x 版只容許每一個 Index 包含一個 Type,7.x 版將會完全移除 Type。性能
文檔(Document)測試
一個文檔是一個能夠被索引的基礎信息單元。通常對象會包含複雜數據結構,日期、地理位置、方位等信息,傳統的關係型數據庫不得不把有關係的信息拆分爲行列存儲,而後查詢出來後進行重組。但是ES不須要這樣,ES是面向文檔(document oriented)的,這意味着你能夠存儲整個對象或者文檔(document),不只能夠存儲還會爲每一個文檔創建索引以方便搜索。同時你也能夠對文檔進行排序、過濾、搜索等操做。對象
分片和複製片(shards and replicas)排序
一個索引存儲自己沒有數量,大小限制可是一臺單機的存儲是有限的並且極大的數據處理也會比較緩慢。爲了解決這個問題ES提供了將索引劃分紅多片的能力,這些片就叫分片(這也是ES天生支持分佈式的緣由)。
在你建立索引的時候能夠指定分片數量。每一個分片都是一個單獨的個體,能夠獨自放在集羣的任何節點上工做。
分片有這樣的優勢:
分片如何分佈和分佈查詢都由ES管理,用戶無需關心。
在一個網絡/雲的環境裏,失敗隨時均可能發生。在某個分片/節點由於某些緣由處於離線狀態或者消失的狀況下,故障轉移機制是很是有用且強烈推薦的。爲此, ES容許你建立分片的一份或多份拷貝,這些拷貝叫作複製分片,或者直接叫複製。
複製片會和主分片不在一個節點,這樣保證主節點/複製片節點故障時候還要一個節點能夠正常工做。
下一節會講一下ES的安裝,索引,類型,文檔建立,查詢,刪除等知識