女藝人都開始學習 Elasticsearch了
看到朋友圈大佬都在轉載:html
足見 Elasticsearch 的熱度。git
近幾年,活躍於 Elasticsearch 中文社區、各類QQ學習羣、微信學習羣,常常會看到各類各樣的問題, 不少問題,官方文檔已經寫得很是清楚了,甚至官方文檔早有了答案。程序員
官方文檔強調內容舉例:github
避免對 text 類型使用 term query。
Avoid using the term query for text fields算法
search.allow_expensive_queries 設置爲 false後,wildcard 將不被執行。
Wildcard queries will not be executed if search.allow_expensive_queries is set to false.安全
text 類型存儲數據結構是倒排索引,而 geo 和 數值類型存儲數據結構是 BKD trees。
For example, text fields are stored in inverted indices, and numeric and geo fields are stored in BKD trees.微信
如上的選型針對的是微信羣的提問:誰知道精確值在 ES 中怎麼存儲的不,好比 "price": 100,也是存儲在倒排索引中的麼?
死磕 Elasticsearch 星球
但,因爲Elasticsearch 更新快、官方文檔都是英文、官方文檔覆蓋面又全又廣,不少初學者知道其有用,但,很容易對其望而卻步。數據結構
退而求其次,選擇了一些老版本的書或者參考資料,浪費了時間、走了不少彎路,然後又經過google、stackoverflow、disscuss.elastic.co、github 跳到了官方文檔,這時候才恍然大悟:「文檔中都寫着了,我爲何以前不知道?!"app
本文結合本身 Elastic 認證經驗,梳理一下 Elasticsearch 官方文檔的學習路徑。運維
指望對你們能有所幫助。
第一手資料的重要性
學習 Elasticsearch 知識的過程當中,官方英文文檔 + 源碼 + 源碼做者寫的圖書 + 官方博客才能稱爲第一手資料。
第二手資料:github issue, 國外社區論壇,stackoverflow, 國內博客論壇,優秀的國內外圖書。
書的封皮做者部分,著、編著、翻譯的區別(說法不嚴謹)
1)著 - 徹底本身寫的,質量相對高。幾乎不多參考別人的。如:侯捷《深刻淺出MFC》、《程序員的自我修養》、《Elasticsearch源碼解析與實戰》……
2)翻譯 - 翻譯通常會滯後1年+,好比:《Elasticsearch in action》滯後了3年。15年英文版,18年出中文版。
第三手資料:拼湊的國內圖書。
封皮通常會有「編著」字樣。
3)編著 - 編著也不乏優秀做品。但,國內不少博導、碩導、老師等爲了評職稱寫了不少爛書,千萬別買!
如何甄別一本好書 ?看銷量、看評分、看再版狀況基本就能區分個八九不離十。
相比之下:
一手資料優於二手資料,二手資料優於三手資料。
一手資料很是重要,得到知識最直接,沒有中間環節,減小認知盲區和障礙!
Elasticsearch 官方文檔就是第一手資料
字越少,信息量越大!
關於 Elasticsearch 官方文檔,ES 業界大佬怎麼說?
最新 + 豐富 + 權威 + 靠譜
VIVO 搜索總監楊振濤大佬指出:
「一是以官方提供的入門和參考文檔爲主,由於業內如今 ES 相關資料相對來講比較豐富,可是想要跟上官方最新版本的節奏以及考慮權威性,仍是官方的參考文檔和有關的手冊會比較靠譜!」
快速瞭解全貌,有幫助
攜程 WOOD 大叔強調:
「對於新手入門最淺顯易懂的,仍是官方那本 Elasticsearc 權威指南,中文版是2.X,但對新手快速瞭解 Elasticsearch的全貌,有很是大的幫助」。
Elasticsearch 官方文檔地址
Elasticsearch 最新版本官方文檔入口
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
Elasticsearch 權威指南英文版(2.X)
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
Elasticsearch 權威指南中文版(2.X)
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
Elastic Stack 所有文檔入口
https://www.elastic.co/guide/index.html
有什麼區別 ?
《權威指南》:強調 Elasticsearch 原理
《官方文檔》:有版本之分,強調全面和明細API,是你開發運維的幫助文檔。
如何 高效的學習 Elasticsearch 官方文檔
第一:高屋建瓴,從大處創建起全局認知
看有哪些模塊?
無非:部署、索引、檢索、聚合、分析、文檔、集羣、安全等核心模塊。
提早了解文檔全貌及章節脈絡,避免:只見樹木不見森林。
舉例:總攬下 query mapping aggs 等都在哪裏,出問題好去找。
避免:上來就從頭看到尾。和學生時代,背四六級單詞同樣,真的有的同窗考了幾回了,單詞還停留在a開頭的 abandon 部分。
第二:刻意練習查閱 Elasticsearch 官方文檔
遇到問題刻意去找文檔,而不是google或其餘搜索引擎直接不考慮。
雖然很痛苦,但有效果。
凡是花時間梳理的東西,本身記得牢固。別人給現成答案短時間有效果,長期每每記不住。
實戰舉例:
好比:遇到問題 動態模板 就去谷歌搜索「elasticsearch 動態模板」。
但,這並非學習、提高認知的最佳途徑。
應該多思考幾個問題,並帶着問題翻看文檔:
0,英文名是否是 dynamic template ?
1.動態模板 在文檔的那個部分?
2.動態模板和 mapping 或其餘章節如何關聯的?
3,到底什麼是動態模板?
4,模板、動態模板做用是什麼?
5,是否是還有靜態模板?
6,動態模板和動態映射有什麼關係?
7,實際業務中怎麼用?適用什麼場景?
8,能不能 kibana dev-tool 敲個 demo 加深理解?
第三:實在找不到,纔去用 Elasticsearch 文檔的搜索功能。
實踐你會發現,Elasticsearch 官方文檔搜索不見得能搜到您想要的結果。逐步養成查文檔的習慣、逐步戒掉上來就google、上來就搜索的「不良」習慣。
第四:經過「點、線、面、體」,逐步打造屬於本身的 Elasticsearch 體系。
遇到不會的知識點,建議相關知識點一塊兒過一遍,加強認知。
點造成線,線造成面,面造成知識體系。
舉例1:字段類型,多個字段類型構成 mapping,mapping 和 setting 構成模板,模板就是數據建模的考慮因素。
反過來,由數據建模往下考慮,二者結合效果更佳。
舉例2:遇到問題,能將問題拆分到所屬模塊,在對應模塊裏查找。
可能會出現跨模塊,不要怕,一併學習之。
舉例3:shard allocatin 在索引模塊和集羣模塊都有,兩個都要看,一塊兒加深認知!
剛開始很難、堅持下來你會發現很靠譜。
咱們平常遇到的基礎問題,80%以上都能從文檔中找到答案。
Elastic 認證考試的內容,拆解梳理後,90%以上都能直接或者連接找到答案。
若是,沒有找到,說明不熟。
而Elastic 認證考試不過的惟一緣由:不熟!!!若是不熟,確定經過不了考試!
關於 Elasticsearch 文檔學習,常見問題
Q1:看英文有點吃力?
這不還有翻譯嘛?
若是實在不行,能夠先讀翻譯版本的中文文檔,回過頭來再看英文文檔。
Q2:先看文檔再實踐,仍是先實踐再翻文檔?
上了直接看文檔,很容易找不到北,尤爲遇到看不懂的,會倍增挫敗感。
因此,建議:
結合實踐,遇到問題反查文檔提高的快。
如前所述,經過一個知識點,串聯其餘知識點,逐步造成「點、線、面、體」的知識體系。
固然,若是你要備戰認證考試,兩種要結合。
Q3:要多熟悉呢?
多熟悉都不爲過。
騰訊大佬指出的「滾瓜爛熟」有點誇張,可是越熟悉,解決問題越快!
熟悉了,能夠再去研究源碼、研究底層 Lucene 原理、算法數據結構原理。
小結
對於 Elasticsearch 的學習,官方文檔只是繞不開的一個基礎環節。
官方文檔不能包治百病,但絕對能解決 80% 以上的問題。