背景
在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)
准確率也叫精度是檢索出的相關文檔數與檢索出的文檔總數的比率。衡量的是檢索結果的查准率。
總結
不負春光不負卿!
推薦閱讀
作者是一個有美國硅谷、日本東京工作經驗,十二年堅持一線寫代碼的程序媛。堅持原創文章。歡迎技術交流!