背景
在13年的時候,我開始負責整個公司的搜尋引擎。嗯……,不是很牛的那種大專案負責人。而是整個搜尋就我一個人做。哈哈。
後來跳槽之後,所經歷的團隊都用Elasticsearch,基本上和快取一樣,是專案必備的工具。目前靜兒在做的專案中也在用,正好系統學習一下。畢竟靜兒的夢想就是打造自己的搜尋引擎。
目錄
1.近實時(NRT NearRealtime)
2.叢集(Cluster)
3.節點(Node)
4.索引(Index)
5.文件(Document)
6.分片和副本(Shards & Replicas)
7.快取資料(fielddata)
8.文件值(doc values)
9.行為模式(norms)
10.召回率(Recall Rate)
11.準確率(Precision)
正文
1.近實時(NRT NearRealtime)
ES是一個近實時的搜尋平臺,就是說從開始建立索引到能被搜尋到只有很少的延時(通常是1s)。
2.叢集(Cluster)
叢集是一個或者多個節點(Node)協同工作來承載所有的資料,並提供跨所有節點的索引和搜尋能力。一個叢集有一個唯一名稱作為標識,預設叫「elasticsearch」。因為在有多個節點的情況下,節點都是通過叢集名來確定被安裝到哪個叢集,所以叢集名很重要。
3.節點(Node)
節點是叢集的一部分,就是叢集裡的一個伺服器。它儲存著資料,給提供叢集的索引和搜尋能力。像叢集一樣,一個節點也是用名稱來做標識。它預設是一個在節點啟動時被指定的隨機UUID(Universally Unique Ientifier全域性唯一標識)。如果不想用預設值,也可以自定義節點名。因為它是作為網路中的伺服器和節點關係的紐帶,所以這個名字對叢集的管理來說很重要。
4.索引(Index)
索引是有相同特性的文件集合。舉個例子?:可以定義一個儲存客戶端資料的索引,建一個產品目錄索引,再來一個順序資料的索引。它也是靠名稱來作為唯一標識的。通過索引名可以對索引內的文件進行索引新增、更新、搜尋、刪除等操作。
5.文件(Document)
文件是可以被索引的最小單元。舉個例子?:可以定義一個儲存客戶端資料的文件,建一個產品目錄文件,再來一個順序資料的文件。文件是用JSON(JavaScript Object Notation)來表示的。JSON是一個非常通用的資料傳輸形式。
6.分片和副本(Shards & Replicas)
為了解決讓索引可以儲存超過一個節點機器硬體限制的資料的問題。ES提供了將索引分割成多塊的能力。這個資料小塊叫做分片。建立索引時可以指定分片數量(副本數)。每個分片內部都是獨立的,功能完整的。可以隨便移植到叢集的任何一個節點上。
7.快取資料(fielddata)
快取資料是文字欄位使用的一個用於記憶體查詢的資料結構。這個資料結構是第一次使用的時候被按需載入來用於聚合、排序或者指令碼運算的。是通過讀取所有段內的整個倒排索引,反轉詞條和文件關係,把結果儲存到JVM堆中實現的。
8.文件值(doc values)
通過資料結構來進行聚合工作被叫做文件值。文件值是讓聚合快速、高效、記憶體友好的手段。
9.行為模式(norms)
norms中國人一般大家也說norms。因為翻譯過來的不能很貼切的表達原義。它儲存了很多用於查詢時計算評分的標準引子。
10.召回率(Recall Rate)
召回率也叫查全率是檢索出的相關文件數和文件庫中所有的相關文件數的比率。衡量的是檢索結果是查全率。
11.準確率(Precision)
準確率也叫精度是檢索出的相關文件數與檢索出的文件總數的比率。衡量的是檢索結果的查準率。
總結
不負春光不負卿!
推薦閱讀
作者是一個有美國矽谷、日本東京工作經驗,十二年堅持一線寫程式碼的程式媛。堅持原創文章。歡迎技術交流!